有一个订单表A,分别有order_id(订单id)、user_id(用户id)、amt(金额)三个字段,
用sql实现以下功能:
i. 求订单总量为top3的用户及交易笔数,同时求出其交易笔数占全量订单笔数的占比。
ii. 求每个用户top3交易金额的订单。
iii. 求订单总量从大到小排名在50%之前的用户。
--********************************************************************************************************
-- i. 求订单总量为top3的用户及交易笔数,同时求出其交易笔数占全量订单笔数的占比。
select
user_id
,count(*) as trade_cnt --交易笔数
,count(*)/sum(count(*))over() as trade_cnt_rate--交易笔数/总交易笔数
from
(
select 'd001' as order_id,123 as user_id,20 as amt
union all select 'd002' as order_id,123 as user_id,25 as amt
union all select 'd005' as order_id,123 as user_id,250 as amt
union all select 'd007' as order_id,123 as user_id,100 as amt
union all select 'd003' as order_id,125 as user_id,15 as amt
union all select 'd004' as order_id,125 as user_id,39 as