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 )