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