MySQL 中的 rank 函数
Preet Sanghavi
2022年5月13日
在本教程中,我们将介绍如何在 MySQL 中使用 rank
函数。
MySQL 有许多窗口函数。其中之一是 MySQL 中的 rank
函数。
许多组织和企业都有这样的要求,即他们需要根据特定条件对行中的数据进行排名。rank
函数可用于完成此操作。
例如,在课堂上,如果老师决定根据学生按学科分类的分数对学生进行排名,他们可以使用 MySQL 中的 rank
函数。此功能可以根据学生的表现对学生进行单独排名,以进行数据分析。
使用 Rank
函数对 MySQL 中的数据进行排名
让我们了解这个功能是如何工作的。
在开始之前,我们创建一个虚拟数据集来使用。在这里,我们创建了一个表 person
和几行。
CREATE TABLE person (id int, first_name varchar(20), age int, gender char(1));
-- insert rows to the table student_details
INSERT INTO person VALUES (1, 'Bob', 25, 'M'),
(2, 'Jane', 20, 'F'),
(3, 'Jack', 30, 'M'),
(4, 'Bill', 32, 'M'),
(5, 'Nick', 22, 'M'),
(6, 'Kathy', 18, 'F'),
(7, 'Steve', 36, 'M'),
(8, 'Anne', 25, 'F'),
(9, 'Kamal', 25, 'M'),
(10, 'Saman', 32, 'M');
要查看数据中的条目,我们使用以下代码。
SELECT * FROM person;
上面的代码将给出以下输出。
id first_name age gender
1 Bob 25 M
2 Jane 20 F
3 Jack 30 M
4 Bill 32 M
5 Nick 22 M
6 Kathy 18 F
7 Steve 36 M
8 Anne 25 F
9 Kamal 25 M
10 Saman 32 M
建好表后,我们可以对数据进行如下排序。
让我们通过根据年龄对他们进行排序并根据他们的性别对他们进行分区来对数据集中的人进行排名。可以使用以下查询来完成此操作。
SELECT RANK() OVER (Partition by Gender ORDER BY Age) AS `Partition by Gender`,
first_name as name,
Age,
Gender
FROM person;
在查询中,名为 person
的表将帮助我们对数据进行排序,以便所有人按性别分区并按年龄升序排列。
查询的输出如下所示。
id name age gender
1 Kathy 18 F
2 Jane 20 F
3 Anne 25 F
1 Nick 22 M
2 Bob 25 M
2 Kamal 25 M
4 Jack 30 M
5 Bill 32 M
5 Saman 32 M
7 Steve 36 M
正如我们在上面看到的,数据按年龄排序并根据性别进行隔离。
我们在 MySQL 中使用带有 AS
关键字的别名 name
来增加程序的可读性。
因此,在 RANK
函数和 Partition by
子句的帮助下,我们可以有效地对数据进行排序,并根据我们在 MySQL 中的需要对它们进行排序。
作者: Preet Sanghavi