SQL之删除重复项

今天分享一个SQL函数的基本用法:row_number() over

也可以用于一道经典的SQL面试题目当中:如何删除重复列?

下面从row_number() over基本用法,讲起~

over里面有2个参数,

order by:必填,紧跟需要排序的字段

partition by:非必填,紧跟需要分组的字段

根据实际情况练一波:

如下图有这么一张表:StudentInfo

 

 

 

 

 

 

 

Q1:请根据成绩排名?

select *,ROW_NUMBER() over(order by Grade desc) as 'Rank'
from StudentInfo

 

 

 

 

 

 

 

Q2:查出男、女成绩第一名?

with
cte
as
(
select *,ROW_NUMBER() over(partition by Sex order by Grade desc) as 'Rank'
from StudentInfo
)
select * from cte where Rank = 1

 

 

 

 

Q3:如何删除重复项?

with
cte
as
(
select *,ROW_NUMBER() over(partition by Name,Sex,Grade order by Grade desc) as 'SeeCount'
from StudentInfo
)
delete from cte where SeeCount > 1

 

 

 

 

 

这样重复的那条鱼老六就被删除了。

 

6



微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

SQL之删除重复项
嘿!有什么能帮到您的吗?
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close