SQL 窗口函数

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 <排序用列清单>)

根据分数对学生从高到低排名,不对科目进行分组,成绩相同则排名相同并且位次连续
sql 复制代码
SELECT student_name, score, DENSE_RANK() OVER(ORDER BY score DESC) AS 'rank' FROM grade;
根据分数对同科目的学生从高到低排名,成绩相同,排名不相同
sql 复制代码
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计算平均数、众数、中位数(可以参考我之前的视频)

相关推荐
辰同学ovo8 分钟前
从一条 SQL 到三个原则:MySQL 心智模型
sql·mysql·adb
数智化管理手记27 分钟前
财务大数据怎么管住资金风险?财务大数据和财务数智化到底怎么结合?
大数据·网络·数据库·人工智能·数据挖掘
晓子文集28 分钟前
Tushare接口文档:指数成分和权重(index_weight)
大数据·数据库·python·金融·量化投资
吴声子夜歌37 分钟前
MongoDB 4.2——入门指南
数据库·mongodb
吴声子夜歌42 分钟前
MongoDB 4.x——高可靠
数据库·mongodb
light blue bird1 小时前
组轴式执行引擎 ✅ 多线程调度组装组件
数据库·信息可视化·oracle·桌面端winform·多节点端·gdi图表绘制开发
码农学院1 小时前
Node.js MongoDB构建户外用品GEO优化内容管理平台
数据库·mongodb·node.js
吴声子夜歌1 小时前
MongoDB 4.x——治理经验
数据库·mongodb
黄华SJ520it2 小时前
门店预约系统开发:提升服务行业数字化转型
前端·数据库·系统开发
万事可爱^2 小时前
Claude 新发布的 Opus 5,系统提示语删了 80%,半价还能逼近 Fable 5
android·服务器·数据库·人工智能·claude