Menu
Coddy logo textTech

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. Используйте тот вариант, который читается легче.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • <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
    -- ...
quiz iconПроверьте себя

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

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