CASE WHEN
CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 1/27。
CASE式は、SQLにおけるif/else if/elseのようなものです。これはSELECT(またはORDER BY、あるいはWHERE)の中に記述され、各行に対して値を生成します。
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
WHEN score >= 60 THEN 'C'
ELSE 'F'
END AS grade
FROM students各 WHEN は上から順にチェックされ、最初に一致したものが採用されます。ELSE は任意です。これがない場合、一致しない行は NULL になります。
常にENDで終了し、ASを使用してカラムに名前を付けてください。
チャレンジ
簡単利用可能なテーブルとカラム:
<strong>employees</strong>:<strong>id</strong>,<strong>name</strong>,<strong>department</strong>,<strong>salary</strong>
各従業員について、name、department、および以下のように構築された tier カラムを返してください:
salary >= 150000の場合は'partner'(部署は問いません)department = 'eng'かつsalary >= 100000の場合は'senior'salary >= 60000の場合は'mid'- それ以外の場合は
'entry'
salary の降順で並べ替えてください。WHEN ブランチの順序が重要であることに注意してください。最初に一致したものが優先されます。
チートシート
CASE は SELECT 内で if/else のように動作し、行ごとに値を生成します:
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
ELSE 'F'
END AS grade
FROM students- 条件は上から下へチェックされ、最初に一致したものが適用されます
ELSEは任意です。これがない場合、一致しない行はNULLを返します- 常に
ENDで閉じます。カラムに名前を付けるにはASを使用します
自分で試してみよう
SELECT name, department,
-- salary と department を組み合わせた複数の WHEN ブランチを持つ tier
FROM employees
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。