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