MySQL 中的 rank 函数

Preet Sanghavi 2022年5月13日
MySQL 中的 rank 函数

在本教程中,我们将介绍如何在 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
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相关文章 - MySQL Function