メインコンテンツまでスキップ
バージョン: 4.x

NTILE

説明

NTILE()は、順序付けされたデータセットを指定した数のほぼ等しいバケットに分割するウィンドウ関数です。バケットは1から指定されたバケット数まで順次番号が付けられます。データを均等に分割できない場合、余分なレコードは番号の小さいバケットに割り当てられ、各バケットの行数の差が最大1になるようにします。

構文

NTILE( <constant_value> )

パラメータ

Parameterデスクリプション
constant_value必須。作成するバケット数を指定します。正の整数である必要があります

Return Value

指定されたバケット数の1から範囲内のBIGINTバケット番号を返します。

Usage 注釈

ステートメントにNTILE関数内のORDER BY句と出力結果用のORDER BY句の両方が含まれている場合、これら2つのソートは独立しています:

  • NTILE関数内のORDER BYは各行がどのバケットに割り当てられるかを決定します
  • 出力のORDER BYは結果の表示順序を決定します

Examples

SELECT 
name,
score,
NTILE(4) OVER (ORDER BY score DESC) as quarter
FROM student_scores;
+----------+-------+---------+
| name | score | quarter |
+----------+-------+---------+
| Alice | 98 | 1 | -- Top 25% scores
| Bob | 95 | 1 |
| Charlie | 90 | 2 | -- 25-50% scores
| David | 85 | 2 |
| Eve | 82 | 3 | -- 50-75% scores
| Frank | 78 | 3 |
| Grace | 75 | 4 | -- Bottom 25% scores
| Henry | 70 | 4 |
+----------+-------+---------+