Menu
Coddy logo textTech

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を使用してカラムに名前を付けてください。

challenge icon

チャレンジ

簡単

利用可能なテーブルとカラム:

  • <strong>employees</strong>: <strong>id</strong>, <strong>name</strong>, <strong>department</strong>, <strong>salary</strong>

各従業員について、namedepartment、および以下のように構築された tier カラムを返してください:

  • salary >= 150000 の場合は 'partner'(部署は問いません)
  • department = 'eng' かつ salary >= 100000 の場合は 'senior'
  • salary >= 60000 の場合は 'mid'
  • それ以外の場合は 'entry'

salary の降順で並べ替えてください。WHEN ブランチの順序が重要であることに注意してください。最初に一致したものが優先されます。

チートシート

CASESELECT 内で 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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

応用のすべてのレッスン