当前位置: 代码网 > it编程>数据库>MsSqlserver > SQL 窗口函示例数详解

SQL 窗口函示例数详解

2024年07月03日 MsSqlserver 我要评论
1.窗口函数之排序函数rank, dense_rank, row_number1.rank函数计算排序时,如果存在相同位次的记录,则会跳过之后的位次有 3 条记录排在第 1 位时: 1 位、1 位、1

1.窗口函数之排序函数

rank, dense_rank, row_number

1.rank函数

计算排序时,如果存在相同位次的记录,则会跳过之后的位次

有 3 条记录排在第 1 位时: 1 位、1 位、1 位、4 位…

2.dense_rank函数

同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次

有 3 条记录排在第 1 位时: 1 位、1 位、1 位、2 位

3.row_number函数

赋予唯一的连续位次。

例)有 3 条记录排在第 1 位时: 1 位、2 位、3 位、4 位

语法
<窗口函数> over ([partition by <列清单>] order by <排序用列清单>)

根据分数对学生从高到低排名,不对科目进行分组,成绩相同则排名相同并且位次连续

select student_name, score, dense_rank() over(order by score desc) as 'rank' from grade;

根据分数对同科目的学生从高到低排名,成绩相同,排名不相同

select student_name, score, row_number() over(partition by course_name order by score desc) as 'rank' from grade;

窗口函数使用场景

1.直接排序:按照某列对数据进行排序
2.top-k:查询排名top-k的数据
3.最值问题:查询最大、最多的数据
4.辅助列:比如计算连续登陆问题、用sql计算平均数、众数、中位数(可以参考我之前的视频)

到此这篇关于sql 窗口函数的文章就介绍到这了,更多相关sql 窗口函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com