CASE в ORDER BY
Часть раздела Продвинутый уровень путешествия по SQL на Coddy — урок 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. Используйте тот вариант, который читается легче.
Задание
ЛегкоДоступные таблицы и столбцы:
<strong>tasks</strong>:<strong>id</strong>,<strong>title</strong>,<strong>priority</strong>
Верните title и priority, отсортированные так, чтобы 'critical' шло первым, затем 'high', затем 'low', а всё остальное — в последнюю очередь. Внутри одного и того же приоритета выполните сортировку по title в алфавитном порядке.
Шпаргалка
Используйте CASE внутри 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 ... эквивалентна CASE WHEN column = value THEN ....
Попробуйте сами
SELECT title, priority
FROM tasks
ORDER BY
-- ...
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.