NTILE Function
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 67/72。
NTILE(n) は、行を n 個のほぼ等しい部分に分割して番号付けします。これはパフォーマンス向上のためにしばしば使用されます。一度に大量のデータを送信するのは良い考えではないので、この関数により一度に小さな部分を送信できます。
例:
| id | level |
| 1 | 4 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
| 6 | 7 |
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1これは以下を返します:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
3つのグループが得られました:グループ 1 にレベル 4、グループ 2 にレベル 5 とレベル 6、グループ 3 にレベル 7。
行数が n で割り切れない場合、NTILE は行をできるだけ均等に分配し、より大きなグループが最初に現れます。例えば、9 行と NTILE(4) の場合、分布は次のようになります:
- グループ 1: 3 行
- グループ 2: 2 行
- グループ 3: 2 行
- グループ 4: 2 行
これにより、どのグループも他のグループから1行以上異なることがなく、余分な行は低い番号のグループに最初に割り当てられます。
チャレンジ
簡単利用可能なテーブルと列:
<strong>creatures</strong>:<strong>creature_name</strong>,<strong>preference</strong>,<strong>has_legs</strong>('YES' または 'NO' を含む)
この課題では、生涯のパートナーを見つけたいクリーチャーがいます。彼らのマッチを見つける手助けをしましょう。
各クリーチャーは数字で表される好みを持っています。2匹のクリーチャーの数字が十分に近い場合、良いマッチになる可能性があります。
好みの値に基づいてクリーチャーを3つのグループに分けますが、脚を持つクリーチャーのみ(has_legs = 'YES')を考慮します。creature_name、preference、およびその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 行
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns9Multiple tables
Basic Join Part 1Basic Join Part 2Recap - JoinSelf joinRecap - Self JoinUnionSimplify queries, WITH keywordRecap - With QueriesRecap - Real Estate Contractor12Window Functions part 2
RANK & DENSE_RANK FunctionsRecap - RANK & DENSE_RANKNTILE FunctionAggregation FunctionsROWS & RANGE Criterion