Sort Results Part 2
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 14/72。
SQL で ORDER BY を使用する場合、複数の列でデータをソートできます。
たとえば、以下の competition テーブルを考えてみてください:
| runner_id | age | avg_speed (m/s) |
|---|---|---|
| 1 | 47 | 3.65 |
| 2 | 62 | 3.07 |
| 3 | 57 | 6.82 |
| 4 | 56 | 4.34 |
| 5 | 25 | 4.93 |
| 6 | 40 | 3.94 |
| 7 | 23 | 6.58 |
| 8 | 40 | 3.43 |
SELECT *
FROM competition
WHERE age < 50
ORDER BY age DESC, avg_speed DESCこのクエリは以下を行います:
- まず、すべてのレコードを age で降順(高い順から低い順)にソートします
- 2つ以上のレコードが同じ age を持つ場合、それらの特定のレコードを avg_speed で降順(高い順から低い順)にソートします
結果:
| runner_id | age | avg_speed (m/s) |
|---|---|---|
| 1 | 47 | 3.65 |
| 6 | 40 | 3.94 |
| 8 | 40 | 3.43 |
| 5 | 25 | 4.93 |
| 7 | 23 | 6.58 |
チャレンジ
簡単利用可能なテーブルと列:
feathers:id,weight,area
area を降順で並べ替えた後、全ての id を返してください。feathers が同じ area の場合、weight を昇順で並べ替えてください。
チートシート
ORDER BY を使用して、複数の列でデータをソートできます。最初に指定された列が優先され、後続の列は同点時のブレーカーとして使用されます:
SELECT *
FROM competition
ORDER BY age DESC, avg_speed DESCこれにより:
- まず age を降順でソート
- レコードの age が同じ場合、avg_speed を降順でソート
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
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 columns