OceanBase RANK

2021-06-24 17:05 更新

RANK 函數(shù)基于 OVER 子句中的 ORDER BY 表達式確定一組值的排名。當有相同排序值時,將會有相同的排名,并且值相同的行數(shù)會被記錄到下個排名中。

語法

RANK()  OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list ])

參數(shù)

參數(shù)

說明

OVER

使用 OVER 子句定義窗口進行計算。

PARTITION BY [col1, col2..]

指定開窗口的列。

ORDER BY col1[asc|desc]

指定排名依據(jù)的值。

expr_list

是數(shù)值類型或者可以轉(zhuǎn)換成數(shù)值類型的類型。

order_list

定義排名值參考的數(shù)據(jù)列。

示例

建表 course,并向 name 和 grade 列插入數(shù)據(jù),執(zhí)行以下語句:

CREATE TABLE course
(
  name VARCHAR(8),
  grade NUMBER
);
INSERT INTO course VALUES('Linda',50);
INSERT INTO course VALUES('Tan',85);
INSERT INTO course VALUES('Tom',90);
INSERT INTO course VALUES('John',95);
INSERT INTO course VALUES('Mery',55);
INSERT INTO course VALUES('Peter',60);
INSERT INTO course VALUES('Jack',65);
INSERT INTO course VALUES('Rose',70);
INSERT INTO course VALUES('Tonny',75);
INSERT INTO course VALUES('Apple',80);
COMMIT;

執(zhí)行以下語句:

SELECT name,grade ,RANK() over(ORDER BY grade DESC) FROM course;

查詢結(jié)果如下:

+-------+-------+------------------------------+
| NAME  | GRADE | RANK()OVER(ORDERBYGRADEDESC) |
+-------+-------+------------------------------+
| John  |    95 |                            1 |
| Tom   |    90 |                            2 |
| Tan   |    85 |                            3 |
| Apple |    80 |                            4 |
| Tonny |    75 |                            5 |
| Rose  |    70 |                            6 |
| Jack  |    65 |                            7 |
| Peter |    60 |                            8 |
| Mery  |    55 |                            9 |
| Linda |    50 |                           10 |
+-------+-------+------------------------------+
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號