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

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

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

解题思路: 反向推导, 正向执行

反向推导

  1. 获得连续2天及以上购物的用户及其对应的天数, 需要计算每位用户连续购买的天数, 再筛选出不小于2天的用户及其对应的天数
  2. 计算用户连续购买的天数, 需要定位出用户连续购买的日期, 在进行统计

正向执行

  1. 首先准备一个11月份每位用户以天为单位的购买记录, 并定位出连续购买的参照日期
  2. 计算每位用户连续购买的天数
  3. 筛选出连续2天及以上购物的用户及其对应的天数

一个关键点

  • 连续购买天数的计算, 考虑连续购买的前后日期差应当相等并且为1, 所以可以通过先对日期排序, 再用当日的日期减去排序号, 如果日期连续, 则得到的日期差相同(即开始连续购买的前一天日期), 以此为依据计算连续的天数
    select distinct 
           user_id,
           days
      from (
            select user_id,
                   count(*) over (partition by user_id, tp_dt) as days
              from (
                    select distinct 
                           sales_date,
                           user_id,
                           date_sub(sales_date, interval dense_rank() over (partition by user_id order by sales_date) day) as tp_dt
                      from sales_tb
                     where date_format(sales_date, "%Y%m") = "202111"
              ) as a
      ) as b 
     where days >= 2
  order by user_id
全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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