ORDER BYでのCASE
CoddyのSQLジャーニー「応用」セクションの一部。レッスン 2/27。
CASE は SELECT だけのものではありません。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と同等です。より読みやすい方を使ってください。
チャレンジ
簡単利用可能なテーブルと列:
tasks:id、title、priority
title と priority を返し、'critical'、次に 'high'、次に 'low' の順で並べ、それ以外は最後にしてください。同じ優先度の場合は、title のアルファベット順で並べ替えてください。
自分で試してみよう
SELECT title, priority
FROM tasks
ORDER BY
-- 下のプレースホルダーの並び順を、CASE式に置き換えて
-- タスクの説明どおりに行をランク付けし、同点の場合はアルファベット順でタイを解消する
id
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
応用のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド