SQLite NTILE

Summary:このチュートリアルでは、SQLiteNTILE()関数を使用して結果セットをいくつかのバケットに分割し、各行にバケット番号を割り当てる方法を学

SQLite NTILE()関数の概要

SQLiteNTILE()関数は、順序付けられた結果セットを指定された式でいくつかのバケットに分割し、各行に適切なバケット番号を割り当てるウィ

以下は、NTILE()関数の構文を示しています:

この構文では:

expressionは、リテラルの正の整数または正の整数に解決される任意の有効な式にすることができます。

NTILE()関数は、1からexpressionの値までの数値を各行に割り当てます。 バケット内の行の数は、最大で1だけ異なる場合があります。 バケットで割った行数の残りの部分は、バケット1から始まる各バケットに割り当てられます。

たとえば、10行と4つのバケットがある場合。 各バケットには2行があります。 10月4日の残りは2日である。 したがって、最初のバケットには2+1=3行があり、2番目のバケットにも3行があります。

次の図は、アイデアを示しています:

式の値が行の数より大きい場合、NTILE()関数は行の数に等しいバケットの数を埋めます。 したがって、残りのバケットは空になります。

たとえば、10行と11個のバケットがある場合、各行には1から10までのバケット番号が割り当てられます。 11番目のバケットには行がありません。

expressionではサブクエリまたはウィンドウ関数を使用できないことに注意してください。

PARTITION BY

PARTITION BY句は、結果セットをNTILE関数が適用されるパーティションに分割します。

ORDER BY

ORDER BY句は、NTILE()が適用される各パーティション内の行の順序を指定します。

SQLite NTILE()関数の例

サンプルデータベースのtracksテーブルを使用して、NTILE()関数をデモします:

SQLITE NTILE()関数をORDER BYで使用する例

次のステートメントは、NTILE()関数を使用して、アルバム1のMillisecondsテーブルのtracks列の値を4つのバケットに分割します。

Milliseconds列にはこのアルバムで10個の値があるため、10/4の残りの2つの余分な値はバケット1と2に分散され、バケット3または4よりも多くの値が得られます。

ここに出力があります:

SQLITE NTILE()関数とPARTITION BY句の使用例

次のステートメントは、NTILE()関数を使用して、各アルバムのトラックをBytes列の値で3つのバケットに分割します:

次の図は、出力を示しています:

この例では、PARTITION BY句は行をパーティションまたはアルバムに分散しました。 ORDER BY句は、各アルバムのトラックをバイト単位のサイズでソートしました。 そして、NTILE()関数は、各トラックにバケット番号を割り当て、各アルバムのバケット番号をリセットします。

このチュートリアルでは、SQLiteNTILE()関数を使用して結果セットをいくつかのバケットに分割し、各行にバケット番号を割り当てる方法を学習しました。

  • このチュートリアルは役に立ちましたか?
  • はい

You might also like

コメントを残す

メールアドレスが公開されることはありません。