题解 | #查询用户刷题日期和下一次刷题日期#

查询用户刷题日期和下一次刷题日期

https://www.nowcoder.com/practice/fed7ebf4254240fdb6a2c963996ee8ff

select 
user_id,
date,
lead(date,1,null) over(partition by user_id order by date) as nextdate
from questions_pass_record;

当所求为窗口中某列的原值时,自然而然想到的是lead、lag等开窗函数;

over里还是老样子,partion by 用户分区,order by 日期(等价于不同的天)顺序排列,这样一来

此时的current_row代表的是原数据中的一行,我们要的是下一个日期即使date,所以在lead函数的三个参数中

参数1:要截取的是哪一个字段(列),我们要的是date (必填)

参数2:要截取的是在current_row后第几行,我们要的是紧接着的一个,即后1个,输入1

参数3:假如current_row后面参数2行的位置已经没有数据了,返回什么值,我们输入null(默认即为null)

所以对应了 lead(date, 1, null ) 也可以写 lead(date, 1 )

全部评论

相关推荐

12-15 12:50
河北工程大学
sta666:我也是这个国际商业化的,三天,一天一面,就通过了,不过我是后端实习生,好好面感觉能过。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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