题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#
某宝店铺连续2天及以上购物的用户及其对应的天数
https://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf
解题思路:首先对日期进行排序,其次判断连续日期,并查询统计连续天数>=2的用户即可。
判断连续日期的方法:
1、对日期去重后进行排序(或者直接用dense_rank进行排序);
2、日期减去排序对应序号的天数如果是一个相同的值,则说明这些日期就是连续的。
3、对连续的日期再次排序就得到了最大的连续数列。
with
t2 as (
select
user_id,
sales_date,
sales_date - row_number() over (
partition by
user_id
order by
sales_date
) as group_diff
from
(
select
user_id,
sales_date,
count(1) as cnt
from
sales_tb
group by
user_id,
sales_date
) t1
)
select
user_id,
days_count
from
(
select
user_id,
group_diff,
count(sales_date) as days_count
from
t2
group by
user_id,
group_diff
having
count(sales_date) >= 2
) t3
order by
user_id
SQL大厂面试题 文章被收录于专栏
牛客网sql大厂面试题题解~

查看14道真题和解析