delete
from
Person
where Id in
(
select Id
from
(
select Id,
row_number() over(partition by Email order by Id) rn
from
Person
) t1
where rn>1
)
使用窗口函数解题
窗口函数可以解决什么问题?
- 排名:每个班级按成绩来排名
- top N:找出每个学科排名前N的同学进行奖励
总之:在每组内排名的问题可以用窗口函数解决
什么是窗口函数?
窗口函数也称为OLAP函数(online anallytical processing,联机分析处理)可以对数据库数据进行实时处理。
语法:
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)
窗口函数的分类
- 专用窗口函数:rank,dense_rank,row_number等专用窗口函数
- 聚合函数:max,min,sum,avg,count等