Menu
Coddy logo textTech

NTILE Function

CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 67/72。

NTILE(n) は、行を n 個のほぼ等しい部分に分割して番号付けします。これはパフォーマンス向上のためにしばしば使用されます。一度に大量のデータを送信するのは良い考えではないので、この関数により一度に小さな部分を送信できます。

例:

idlevel
14
24
35
46
57
67
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1

これは以下を返します:

idlevelpieces
141
241
352
462
573
673

3つのグループが得られました:グループ 1 にレベル 4、グループ 2 にレベル 5 とレベル 6、グループ 3 にレベル 7。
行数が n で割り切れない場合、NTILE は行をできるだけ均等に分配し、より大きなグループが最初に現れます。例えば、9 行と NTILE(4) の場合、分布は次のようになります:

  • グループ 1: 3 行
  • グループ 2: 2 行
  • グループ 3: 2 行
  • グループ 4: 2 行

これにより、どのグループも他のグループから1行以上異なることがなく、余分な行は低い番号のグループに最初に割り当てられます。

challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • <strong>creatures</strong>: <strong>creature_name</strong>, <strong>preference</strong>, <strong>has_legs</strong> ('YES' または 'NO' を含む)

この課題では、生涯のパートナーを見つけたいクリーチャーがいます。彼らのマッチを見つける手助けをしましょう。

各クリーチャーは数字で表される好みを持っています。2匹のクリーチャーの数字が十分に近い場合、良いマッチになる可能性があります。

好みの値に基づいてクリーチャーを3つのグループに分けますが、脚を持つクリーチャーのみ(has_legs = 'YES')を考慮します。creature_namepreference、およびそのgroup_number(1、2、または3)を返します。結果をpreferenceの昇順で並べ替えます。

チートシート

NTILE(n) 関数は、行を n 個のほぼ均等なグループに分割し、それらに順次番号を付けます:

SELECT column1, column2, NTILE(3) OVER (ORDER BY column2) as group_number
FROM table_name

行数が n で割り切れない場合、NTILE は行をできる限り均等に分配し、大きいグループを先に配置します。例えば、9 行と NTILE(4) の場合:

  • グループ 1: 3 行
  • グループ 2: 2 行
  • グループ 3: 2 行
  • グループ 4: 2 行

自分で試してみよう

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン