ORDER BY での CASE
CoddyのSQLジャーニー「応用」セクションの一部。レッスン 2/27。
CASE は SELECT のためだけのものではありません。列単体では表現できないカスタムルールに従って rows を並べ替えるために、ORDER BY の中に配置できます。
SELECT name, status
FROM tickets
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'high' THEN 2
WHEN 'normal' THEN 3
ELSE 4
ENDより短い形式に注目してください: CASE column WHEN value THEN ...。これは WHEN column = value と同等です。より読みやすい方を使用してください。
チャレンジ
簡単利用可能なテーブルとカラム:
<strong>tasks</strong>:<strong>id</strong>,<strong>title</strong>,<strong>priority</strong>
title と priority を取得してください。並び順は 'critical' が最初、次に 'high'、その次に 'low'、それ以外のすべてが最後になるように指定してください。同じ優先度の間では、title の昇順(アルファベット順)でソートしてください。
自分で試してみよう
SELECT title, priority
FROM tasks
ORDER BY
-- 以下のプレースホルダーの順序付けを、CASE式に置き換えて
-- タスクの説明どおりに行をランク付けし、同点の場合はアルファベット順でタイを解消する
id
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
応用のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド