SQL280热题难的一笔

查询每个用户刷题的最早日期以及后一个日期

方法是建立一个临时表,计算行数(按照用户分组,日期排序后)

在主循环中通过min(date)获得最早日期,max(date)获得第二天的日期

代码如下:

select user_id, min(date), max(date), cnt from

(

    select user_id, date,

    row_number()over(partition by user_id order by date)rk,

    count(*)over(partition by user_id)cnt from order_info

    where date > '2025-10-15'

    and product_name in ('C++', 'Python', 'Java')

    and status = 'completed'    

)t

where t.rk in ('1','2') and t.cnt >= 2

group by user_id

order by user_id ASC

#笔试#
全部评论

相关推荐

04-09 21:07
门头沟学院 Java
a了几道
明天也要十一点半之前起床:最恶心的一集。各个都会做,各个都做不对,乍一看开心坏了以为自己能 ak,结果是春招以来做得最垃圾的一次。第二题测试数据里面 k 为什么有 0,直接全错;第三题感觉自己啥情况都考虑了但是只有 60%。
投递拼多多集团-PDD等公司10个岗位 >
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务