Menu
Coddy logo textTech

CASE WHEN

Часть раздела Продвинутый уровень путешествия по SQL на Coddy — урок 1 из 27.

Выражение CASE — это аналог if/else if/else для SQL. Оно используется внутри 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>

Для каждого сотрудника верните его name, department и столбец tier, сформированный следующим образом:

  • 'partner', когда salary >= 150000 (любой отдел)
  • 'senior', когда department = 'eng' и salary >= 100000
  • 'mid', когда salary >= 60000
  • 'entry' в противном случае

Отсортируйте по salary в порядке убывания. Обратите внимание, что порядок веток WHEN имеет значение: побеждает первое совпадение.

Шпаргалка

CASE работает как if/else внутри SELECT, возвращая значение для каждой строки:

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,
       -- уровень с несколькими ветками WHEN, в которых смешиваются salary и department
FROM employees
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Продвинутый уровень