编辑
2024-11-26
💻数据库
00
请注意,本文编写于 205 天前,最后修改于 205 天前,其中某些信息可能已经过时。

目录

RANK 函数概述
与其他排名函数的区别(如 DENSE_RANK)

RANK 函数概述

  • 在 SQL 中,RANK 函数是一种窗口函数,用于为分区(分组)内的每一行分配一个排名。它的基本语法(以常见的关系型数据库如 MySQL 8.0+、Oracle、SQL Server 等为例)如下:
  • RANK() OVER (PARTITION BY column1, column2,... ORDER BY column3 [ASC|DESC])
  • 其中,PARTITION BY子句用于指定分组的列,也就是根据哪些列来划分组。ORDER BY子句用于在每个分组内对行进行排序,从而确定排名的顺序。ASC表示升序排序(默认),DESC表示降序排序。
python
SELECT student_id, subject, score, RANK() OVER (PARTITION BY subject ORDER BY score DESC) AS ranking FROM students_scores;

与其他排名函数的区别(如 DENSE_RANK)

  • RANK 函数:

    当存在相同值时,会跳过相应的排名数。例如,如果有两个学生成绩相同并列第 2 名,那么下一名的排名是第 4 名。

  • DENSE_RANK 函数:

    排名是连续的。同样是两个学生成绩相同并列第 2 名,下一名的排名是第 3 名。例如,在上述学生成绩表中,如果使用DENSE_RANK函数:

python
SELECT student_id, subject, score, DENSE_RANK() OVER (PARTITION BY subject ORDER BY score DESC) AS ranking FROM students_scores;

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!