Сортируем данные
Итоговые данные обычно представляют в определённом порядке. Чтобы сортировать данные по указанным полям, применяют команду ORDER BY (англ. order by, «упорядочить по»).
Формат запроса с группировкой и сортировкой:
Скопировать кодSQL
SELECT
поле_1,
поле_2,
...,
поле_n,
АГРЕГИРУЮЩАЯ_ФУНКЦИЯ(поле) AS here_you_are
FROM
таблица
WHERE
условие
GROUP BY
поле_1,
поле_2,
...,
поле_n,
ORDER BY
поле_1,
поле_2,
...,
поле_n,
here_you_are;
В отличие от GROUP BY, в блоке с командой ORDER BY перечисляем только те поля, по которым хотим сортировать.
У команды ORDER BY два аргумента. Они отвечают за порядок сортировки в столбцах:
- ASC (от англ. ascending, «восходящий») сортирует данные в порядке возрастания. Это аргумент ORDER BY по умолчанию.
- DESC (от англ. descending, «нисходящий») сортирует данные по убыванию.
Аргументы команды ORDER BY указывают сразу после поля, по которому сортировали данные:
Скопировать кодSQL
ORDER BY
название_поля DESC
ORDER BY
название_поля ASC
Посчитаем количество книг каждого автора и отсортируем данные:
Скопировать кодSQL
SELECT
author,
COUNT(name) AS cnt
FROM
books
GROUP BY
author
ORDER BY
cnt;
Мы не указали аргумента для ORDER BY, и данные отсортировались по умолчанию — в порядке возрастания количества книг.
Добавим аргумент DESC:
Скопировать кодSQL
SELECT
author,
COUNT(name) AS cnt
FROM
books
GROUP BY
author
ORDER BY
cnt DESC;
Сразу видно, какого автора предпочитает составитель таблицы! Аргумент DESC вывел данные в порядке убывания.
Команда LIMIT (англ. «предел») ограничивает количество строк в выводе. Её всегда указывают последней в запросе:
Скопировать кодSQL
SELECT
поле_1,
поле_2,
...,
поле_n,
АГРЕГИРУЮЩАЯ_ФУНКЦИЯ(поле) AS here_you_are
FROM
таблица
WHERE
условие
GROUP BY
поле_1,
поле_2,
...,
поле_n,
ORDER BY
поле_1,
поле_2,
...,
поле_n,
here_you_are
LIMIT
n;
После LIMIT указывают требуемое число строк — n. Удобнее строить рейтинг из ограниченного числа элементов.
Например, выведем топ-3 книг по количеству страниц:
Скопировать кодSQL
SELECT
name,
pages
FROM
books
ORDER BY
pages DESC
LIMIT
3;
Многие читали Толстого так: «Войну читаю, мир пропускаю». Или наоборот. Не пытайтесь повторить этот трюк в Практикуме — теория и задачи здесь одинаково важны.