説明
この関数は分析関数であり、順序付きデータセットをいくつかのグループに分割し、各行に適切なグループ番号を割り当てる機能を持っています。グループ番号は 1 から expr までです。
構文
NTILE (expr) OVER ([ query_partition_clause ] order_by_clause)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| expr | 分割するグループ数を指定します。
NTILE または他の分析関数を使用して、分析関数をネストすることはできません。ただし、expr 内で他の組み込み関数式を使用できます。 |
| OVER | OVER 句を使用してウィンドウを定義し、計算を実行します。詳細については、分析関数の説明を参照してください。 |
戻り値のタイプ
NUMERIC 型のデータを返します。
例
既に作成されたテーブル emp_msg があります。テーブル emp_msg 内の列 sal の値に基づいて、人員を 5 つのレベルに分類するクエリを実行します。
obclient> SELECT * FROM emp_msg;
+--------+--------+------+------+
| DEPTNO | ENAME | SAL | MGR |
+--------+--------+------+------+
| 10 | CLARK | 2750 | 7839 |
| 10 | KING | 5300 | NULL |
| 10 | MILLER | 1600 | 7782 |
| 20 | ADAMS | 1400 | 7788 |
| 20 | FORD | 3300 | 7566 |
| 20 | JONES | 3275 | 7839 |
| 20 | SCOTT | 3300 | 7566 |
| 20 | SMITH | 1100 | 7902 |
| 30 | ALLEN | 1900 | 7698 |
| 30 | BLAKE | 3150 | 7839 |
| 30 | JAMES | 1250 | 7698 |
| 30 | MARTIN | 1550 | 7698 |
| 30 | TURNER | 1800 | 7698 |
| 30 | WARD | 1550 | 7698 |
| 30 | SCLARK | 1750 | 7839 |
+--------+--------+------+------+
15 rows in set
obclient> SELECT ename,sal,NTILE(5) OVER (ORDER BY sal DESC) sal_ntile FROM emp_msg ORDER BY sal DESC;
+--------+------+-----------+
| ENAME | SAL | SAL_NTILE |
+--------+------+-----------+
| KING | 5300 | 1 |
| FORD | 3300 | 1 |
| SCOTT | 3300 | 1 |
| JONES | 3275 | 2 |
| BLAKE | 3150 | 2 |
| CLARK | 2750 | 2 |
| ALLEN | 1900 | 3 |
| TURNER | 1800 | 3 |
| SCLARK | 1750 | 3 |
| MILLER | 1600 | 4 |
| MARTIN | 1550 | 4 |
| WARD | 1550 | 4 |
| ADAMS | 1400 | 5 |
| JAMES | 1250 | 5 |
| SMITH | 1100 | 5 |
+--------+------+-----------+
15 rows in set