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.
Задание
ЛегкоДоступные таблицы и столбцы:
<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
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.