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子句中

原文地址:https://www.cnblogs.com/dayang12525/p/14886440.html