OceanBase NTILE

2021-06-25 15:06 更新

NTILE 函數(shù)將有序數(shù)據(jù)集劃分為 expr 指示的若干桶,并為每一行分配適當(dāng)?shù)耐疤?hào)。桶編號(hào)為 1 到 expr。 對(duì)于每個(gè)分區(qū),expr 值必須解析為正常數(shù)。如果 expr 是一個(gè)非整數(shù)常量,則 OceanBase 將該值截?cái)酁檎麛?shù)。 返回值為 NUMBER。

桶中的行數(shù)最多可以相差 1,其余值(行數(shù)的其余部分除以桶)為每個(gè)桶分配一個(gè),從桶 1 開始。如果 expr 大于行數(shù),則將填充與行數(shù)相等的多個(gè)桶,其余的桶將為空。

您不能通過(guò)使用 NTILE 或任何其他分析函數(shù)來(lái)嵌套分析函數(shù)。 但是您可以將其他內(nèi)置函數(shù)表達(dá)式用在 expr 中。

語(yǔ)法

NTILE(expr) OVER ([query_partition_clause] order_by_clause)

參數(shù)

參數(shù)

說(shuō)明

expr

只能為正常數(shù)。

OVER

使用 OVER 子句定義窗口進(jìn)行計(jì)算。

返回類型

返回 NUMERIC 類型數(shù)據(jù)。

示例

根據(jù)成績(jī)將同學(xué)分成四個(gè)等級(jí),為學(xué)生評(píng)獎(jiǎng)。創(chuàng)建表 course,并向里面插入數(shù)據(jù),執(zhí)行以下語(yǔ)句:

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í)行以下語(yǔ)句:

SELECT name, grade, ntile(4) OVER (ORDER BY grade DESC) til FROM course;

查詢結(jié)果如下:

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)