题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#

某宝店铺连续2天及以上购物的用户及其对应的天数

http://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf

想要一张这样的表:

alt

按照不同消费者的消费日期排序,同一天则序号相同,第二天开始记为2,以此类推;连续标识用来判别消费的第“2,3,4,5……”天是不是连续的,因此当ranking大于1且连续标识等于1时,说明这一条记录是符合条件的uid和rank,最后从中取出连续标识为1的最大的ranking即可

select user_id,
	   max(ranking) as 连续天数
       from
(select user_id,sales_date,dense_rank() over(partition by user_id order by sales_date) as ranking,
	   case when datediff(t1.sales_date,(select max(sales_date) from sales_tb where sales_tb.sales_date < t1.sales_date and sales_tb.user_id = t1.user_id)) = 1 then 1 else 0 end as 连续标识
	   from sales_tb t1) a
       where ranking >= 2 and 连续标识 = 1
       group by user_id
       order by user_id;
       

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务