MySQL中的rank()函数详解

2024年04月08日 MySQL中的rank 函数详解 极客笔记

MySQL中的rank()函数详解

在MySQL中,可以使用rank()函数来为查询结果集中的每一行分配一个排名(即序号)。rank()函数可以根据指定的条件对数据进行排序,并为每一行分配一个排名,排名相同的行将具有相同的排名,而下一行的排名将会跳过。

语法

rank()函数的语法如下所示:

RANK() OVER (
    [PARTITION BY expr,...]
    ORDER BY expr [ASC|DESC],...
)
  • PARTITION BY:可选的,指定分组排序的列。
  • ORDER BY:指定排序的列,可以包含多个列。
  • ASC|DESC:可选的,指定升序或降序排序。默认为升序排列。

示例

假设有一个名为students的表,包含了学生的成绩信息,结构如下:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    score INT
);

INSERT INTO students VALUES (1, 'Alice', 90);
INSERT INTO students VALUES (2, 'Bob', 85);
INSERT INTO students VALUES (3, 'Cathy', 95);
INSERT INTO students VALUES (4, 'David', 80);
INSERT INTO students VALUES (5, 'Emma', 88);

现在我们想要查询学生的排名,并按照成绩的高低进行排序,可以使用rank()函数来实现:

SELECT
    id,
    name,
    score,
    RANK() OVER (ORDER BY score DESC) AS ranking
FROM
    students;

运行以上查询语句,得到的结果如下:

id name score ranking
3 Cathy 95 1
1 Alice 90 2
5 Emma 88 3
2 Bob 85 4
4 David 80 5

从上表中可以看出,根据学生成绩的排名已经按照降序排列,并且对于成绩相同的学生,排名也是相同的。

总结

通过使用rank()函数,我们可以很方便地为查询结果集中的数据进行排名。在实际应用中,rank()函数可以帮助我们快速了解数据的排名情况,方便分析和决策。

本文链接:http://so.lmcjl.com/news/1484/

展开阅读全文