Menu
CoddyTech

NTILE関数

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

チャレンジ

簡単

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

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

このチャレンジでは、伴侶を見つけたい生き物たちがいます。彼らが相手を見つけられるよう手助けしましょう。

それぞれの生き物には、数値で表される好みがあります。2匹の生き物の数値が十分に近ければ、相性がよいかもしれません。

好みの値に基づいて生き物を3つのグループに分けます。ただし、脚のある生き物(has_legs = 'YES')のみを対象にします。creature_name、preference、およびそのgroup_number(1、2、または3)を返してください。結果はpreferenceの昇順で並べます。

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド