SQL窗口函数的使用
需求:homeworkresults 表中,根据courseid和userid分组,只保留最新的一条数据,其余的删除
delete delh from homeworkresults delh, ( select id from ( select rank() over (partition by CourseId,UserId order by CreateTime desc) as ranking, id from homeworkresults ) a where a.ranking!=1 ) b where b.id=delh.id
(以下为摘抄)
窗口函数有以下功能:
1)同时具有分组(partition by)和排序(order by)的功能
2)不减少原表的行数,所以经常用来在每组内排名
注意事项
窗口函数原则上只能写在select子句中