翻訳ページ
このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。
NTILE
パーティションをできるだけ均等に N 個のグループに分割し、ORDER BY 句で定義された順序で(ない場合は任意の順序で)、各グループに 1 から N までの整数を割り当てます。必要な場合は、大きいグループが先になります。
構文
SELECT NTILE(N) OVER ([PARTITION BY column] ORDER BY column [ASC|DESC])
FROM <multipartIdentifier>;
引数
N パーティションを分割するグループ(タイル)の数を指定する正の整数。
PARTITION BY column
省略可能。結果セットをパーティションに分割します。NTILE 関数は各パーティションに個別に適用されます。
ORDER BY column 行をタイルに割り当てる順序を指定します。
戻り値
現在の行が属するタイル(グループ)を示す 1 から N までの整数を返します。
例
コントリビューション数でコントリビューターを四分位に分ける
-- Group contributors into quartiles by contribution level
SELECT
login,
contributions,
NTILE(4) OVER (ORDER BY contributions DESC) as contribution_quartile,
CASE NTILE(4) OVER (ORDER BY contributions DESC)
WHEN 1 THEN 'Top Contributors'
WHEN 2 THEN 'Active Contributors'
WHEN 3 THEN 'Moderate Contributors'
WHEN 4 THEN 'Occasional Contributors'
END as contributor_tier
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo = 'stackql';
ヒント
NTILE を使用すると、データにセグメントや階層を作成できます。主な用途として、データを四分位(N=4)、十分位(N=10)、または百分位(N=100)に分割することが挙げられます。
詳細については、https://sqlite.org/windowfunctions.html#built-in_window_functions を参照してください。