MySQL 中的 rank 函数

在本教程中,我们将介绍如何在 MySQL 中使用 rank 函数。

MySQL 有许多窗口函数。其中之一是 MySQL 中的 rank 函数。

许多组织和企业都有这样的要求,即他们需要根据特定条件对行中的数据进行排名。rank 函数可用于完成此操作。

例如,在课堂上,如果老师决定根据学生按学科分类的分数对学生进行排名,他们可以使用 MySQL 中的 rank 函数。此功能可以根据学生的表现对学生进行单独排名,以进行数据分析。

使用 Rank 函数对 MySQL 中的数据进行排名

让我们了解这个功能是如何工作的。

在开始之前,我们创建一个虚拟数据集来使用。在这里,我们创建了一个表 person 和几行。

CREATETABLEperson(idint,first_namevarchar(20),ageint,genderchar(1));-- insert rows to the table student_details
INSERTINTOpersonVALUES(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*FROMperson;

上面的代码将给出以下输出。

idfirst_nameagegender1Bob25M2Jane20F3Jack30M4Bill32M5Nick22M6Kathy18F7Steve36M8Anne25F9Kamal25M10Saman32M

建好表后,我们可以对数据进行如下排序。

让我们通过根据年龄对他们进行排序并根据他们的性别对他们进行分区来对数据集中的人进行排名。可以使用以下查询来完成此操作。

SELECTRANK()OVER(PartitionbyGenderORDERBYAge)AS`PartitionbyGender`,first_nameasname,Age,GenderFROMperson;

在查询中,名为 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 中的需要对它们进行排序。