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

#笔试#
全部评论

相关推荐

06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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