暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL基础-分组排序

SQL数据库笔记 2019-11-18
1975

rank() over, dense_rank() over, row_number() over都是用于分组排序的,下面来看看它们的用法以及区别


1.rank() over 语法:

select rank() over(partition by  分组字段  order by  排序字段) as 别名
from 表名

示例:

select *,rank() over(partition by course_id order by grade desc) as 排名
from dbo.stud_grade

使用这个函数,相同列值并列显示,如两个为1的排序,然后接下来就是排序为3,其中排名2跳过。

2.dense_rank() over 语法:

select dense_rank()  over(partition by 分组字段 order  by  排序字段)  as   别名  from 表名

示例:

 select *,dense_rank()  over(partition by course_id order by grade desc) as 排名
from dbo.stud_grade

相同列的值并列显示,如排序为1的两个,但是和rank() over不同的是,它不用跳过排名2,而是直接显示排序2的。

3.row_number() over

select row_number() over(partition by 分组字段 order  by 排序字段) as 别名 from 表名

示例:

select *, row_number() over(partition by course_id order by grade desc) as 排名
from dbo.stud_grade

row_number() over 它不会考虑并列问题,即使查询的列值相同,也不会并列,而是直接排序下去。

如有错误欢迎留言指正

end

有兴趣的小伙伴可以关注“SQL数据库笔记”公众号,一起学习吧!

最后修改时间:2019-12-16 10:02:46
文章转载自SQL数据库笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论