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

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

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

with
    rankList as (
    select 
        sales_date,
        user_id,
        rankingnum,
        date_sub(sales_date,interval rankingnum day) as newdate # 在这个查询中,利用date_sub函数,如果sales_date 减去 rankingnum是一个固定的值,就说明是连续购买的。
    from (
        select 
            sales_date,
            user_id,
            rank()over(partition by user_id order by sales_date) as rankingnum # 在第二次子查询中根据rank窗口函数按照user_id分类,sales_date 升序排序,就可以知道一个人从早到之后的购买时间,但是此时已然不知道客户是否是连续购买。
        from (
            select 
                distinct sales_date,
                user_id
            from 
            sales_tb #这是最内部的子查询因为有用户当日会多次购买,但是当日的多次记录次数只需要记录一次购买记录,所以先通过distinct关键词记录有交易的当日的一次记录
        ) t1
    ) t2
)
    select 
        user_id,
        count(newdate)
    from rankList
    group by 
    user_id,
    newdate #根据客户id和sales_date 减去 rankingnum的值分类,就知道哪些客户连续购买了产品
    having
    count(newdate) >= 2

本题思路和之前的连续签到领金币的思路是一致的,就是购买日期 - 排序号 为一个固定值,根据固定值和user_id进行聚合,查询出现的次数就可以判断是否为连续出现2次以上。

全部评论

相关推荐

12-03 23:38
复旦大学 Java
点赞 评论 收藏
分享
11-06 16:50
门头沟学院 Java
用微笑面对困难:word打字比赛二等奖的我,也要来凑合凑合
点赞 评论 收藏
分享
牛客44664404...:把个人技能删了搞这么长干什么!还有你面试要先针对那个公司的技术栈专门去准备,别一问三不知,他需要你会他们公司对口的技术,写这么多不对口没有用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务