题解 | #做为SQL新手,正确的解题姿势#
第一步:熟悉语法,排序窗口函数:lag/lead:用于统计窗口内当前行往前或者往后第n行值。
语法:lag/lead(col,n,default) ,第一个参数是列名,第二个参数是偏移的offset,第三个参数是超出记录窗口时的默认值
第二步:根据题干拆解代码
题干“下一次刷题日期”,所以用 lead(date,1)。
题干“若是没有则为None”,所以第三参数有了。 lead(date,1,null)。PS:null 在执行代码后返回的空置为 None
题干“该用户的下一次”partition by user_id,分组
题干“该用户的下一次刷题日期”order by date
第三步:组装代码
select user_id,date,
lead(date,1,null) over(partition by user_id order by date) as nextdate
from questions_pass_record
