CASE в ORDER BY
Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 2 из 27.
CASE используется не только в SELECT. Вы можете поместить его внутрь ORDER BY, чтобы отсортировать rows по пользовательскому правилу, которое that столбцы сами по себе не могут выразить.
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 в алфавитном порядке.
Попробуйте сами
SELECT title, priority
FROM tasks
ORDER BY
-- Замените приведённую ниже сортировку-заглушку на выражение CASE, которое
-- ранжирует строки так, как описано в задании, а затем разрешает ничьи в алфавитном порядке
id
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Продвинутый уровень
Потренируйтесь самостоятельно: Песочница SQL