RANK & DENSE_RANK Functions
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 65/72。
ROW_NUMBER() はランキング関数の一種で、他に RANK() と DENSE_RANK() の2つがあります。
RANK() 関数は ROW_NUMBER() のように行を番号付けしますが、同じ行には同じ番号を割り当て、番号をスキップします。 DENSE_RANK() は RANK() に似ていますが、番号をスキップしません。
例:
| id | level |
| 1 | 5 |
| 2 | 6 |
| 3 | 6 |
| 4 | 7 |
| 5 | 7 |
| 6 | 5 |
SELECT id,
ROW_NUMBER() OVER (ORDER BY level) as row_num,
RANK() OVER (ORDER BY level) as row_rank,
DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1これは以下を返します:
| id | row_num | row_rank | row_dense_rank |
| 1 | 1 | 1 | 1 |
| 6 | 2 | 1 | 1 |
| 2 | 3 | 3 | 2 |
| 3 | 4 | 3 | 2 |
| 4 | 5 | 5 | 3 |
| 5 | 6 | 5 | 3 |
説明:
ROW_NUMBER(): 常に一意: 1, 2, 3, 4, 5, 6RANK():- level 5 (2 rows): both get rank 1
- level 6 (2 rows): both get rank 3 (skips 2)
- level 7 (2 rows): both get rank 5 (skips 4)
DENSE_RANK():- level 5 (2 rows): both get rank 1
- level 6 (2 rows): both get rank 2 (no skip)
- level 7 (2 rows): both get rank 3 (no skip)
チャレンジ
簡単利用可能なテーブルと列:
<strong>medals</strong>:<strong>region</strong>,<strong>medal_color</strong>,<strong>medal_count</strong>
地域、総メダル数(色の関係なくすべてのメダルの合計)、および2種類のランキングを表示するクエリを作成してください:
- 合計メダルに対する
regular_rank(ギャップあり) - メダルの合計に対する
dense_rank(ギャップなし)
結果を次のように並べ替え:
order by total_medals desc, region ascチートシート
SQL は、タイ値に対して異なる動作をする3つのランキング関数を提供します:
ROW_NUMBER()- 一意の連続番号を割り当てますRANK()- タイ値に同じランクを割り当て、後続のランクをスキップしますDENSE_RANK()- タイ値に同じランクを割り当て、ランクをスキップしません
例:
| id | level |
| 1 | 5 |
| 2 | 6 |
| 3 | 6 |
| 4 | 7 |
| 5 | 7 |
| 6 | 5 |
SELECT id,
ROW_NUMBER() OVER (ORDER BY level) as row_num,
RANK() OVER (ORDER BY level) as row_rank,
DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1これは以下を返します:
| id | row_num | row_rank | row_dense_rank |
| 1 | 1 | 1 | 1 |
| 6 | 2 | 1 | 1 |
| 2 | 3 | 3 | 2 |
| 3 | 4 | 3 | 2 |
| 4 | 5 | 5 | 3 |
| 5 | 6 | 5 | 3 |
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
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