メインコンテンツまでスキップ
翻訳ページ

このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。

NTILE

パーティションをできるだけ均等に N 個のグループに分割し、ORDER BY 句で定義された順序で(ない場合は任意の順序で)、各グループに 1 から N までの整数を割り当てます。必要な場合は、大きいグループが先になります。

関連項目: [SELECT] [RANK]


構文​

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 を参照してください。