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

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

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

SELECT user_id,COUNT(1)days_count
FROM(
SELECT 
    DISTINCT sales_date,
    user_id,
    DENSE_RANK()OVER(PARTITION BY user_id ORDER BY sales_date)rk
FROM sales_tb)t
GROUP BY user_id,DATE_SUB(sales_date,INTERVAL rk DAY)
HAVING days_count >=2
本道题的运行顺序是:
①首先运行t表内的条件,得到:
②按照user_id、购物日期和日期排序的差进行分组并计算:GROUP BY user_id,DATE_SUB(sales_date,INTERVAL rk DAY),得到:
题目所给日期太少,体现不出来代码的重要组成。此处举个例子。若user_id=1分别在2021-11-01、2021-11-04、2021-11-05购物,那么对于1来说,会存在这样一张表:
那么GROUP BY user_id,2021-11-00,COUNT(1)=1;GROUP BY user_id,2021-11-02,COUNT(1)=2
③最后筛选出连续2天及以上购物的用户,用HAVING days_count >=2,得到:



全部评论

相关推荐

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