SQL首单后第二天继续下单占比

 

订单信息表:order_info

字段:order_id user_id create_date total_amount

需求:从订单信息表,order_info 首次下单后,第二天连续下单占所有下单用户数比例 以百分位展示,保留一位小数

 1 -- 排序取了一天,lead 取了后一天,看两个日期是否相减=1,是就是第二天又下单了,否则不是
 2 -- 关联时,不加on 默认关联
 3 
 4 select round(100*one.第二天连续下单人数  /  two.所有下单用户,1) 第二天连续下单占比 from (
 5  
 6          select count(f.user_id) 第二天连续下单人数  from (
 7         
 8             select user_id,datediff(hou_one_day,first_day) diffdays
 9              
10              from (
11                 select a.user_id,a.create_date first_day,a.hou_one_day  from (
12                 select user_id,create_date
13                 ,row_number() over(partition by user_id order by create_date) day_num
14                 ,lead(create_date,1,'9999-01-01') over(partition by user_id order by create_date) hou_one_day
15                  from order_info
16                 ) a where day_num = 1
17             ) al where diffdays = 1
18          ) f 
19 ) one left join (
20     select count(distinct user_id) 所有下单用户 from order_info
21 ) two 
22 ;

 

posted on 2025-06-23 11:43  北京的小乔  阅读(14)  评论(0)    收藏  举报