2024年04月08日 MySQL中的rank 函数详解 极客笔记
在MySQL中,可以使用rank()函数来为查询结果集中的每一行分配一个排名(即序号)。rank()函数可以根据指定的条件对数据进行排序,并为每一行分配一个排名,排名相同的行将具有相同的排名,而下一行的排名将会跳过。
rank()函数的语法如下所示:
RANK() OVER (
[PARTITION BY expr,...]
ORDER BY expr [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/