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
#笔试#