SQL код скопирован в буфер обмена
EN PT FR

Урок 2.5: Сортировка результатов

По умолчанию строки в таблице базы данных или в наборе результатов запроса не обязательно следуют в каком-либо определенном порядке. Чтобы расположить выходные строки в осмысленной последовательности, мы используем оператор ORDER BY.

Оператор ORDER BY

Оператор ORDER BY добавляется в конец инструкции SELECT для сортировки результирующего набора на основе одного или нескольких столбцов.

Синтаксис

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • column1, column2, ...: Столбцы, по которым вы хотите выполнить сортировку.
  • ASC: Сортирует данные по возрастанию (от меньшего к большему, от А до Я). Это значение по умолчанию.
  • DESC: Сортирует данные по убыванию (от большего к меньшему, от Я до А).

Сортировка по одному столбцу

Чтобы выполнить сортировку по одному столбцу, просто укажите его имя после ключевого слова ORDER BY.

Пример: Сортировка актеров по фамилии

Этот запрос извлекает всех актеров и сортирует их в алфавитном порядке по фамилии.

SELECT first_name, last_name
FROM actor
ORDER BY last_name;

Если вы хотите отсортировать их в обратном алфавитном порядке:

SELECT first_name, last_name
FROM actor
ORDER BY last_name DESC;

Сортировка по нескольким столбцам

Вы можете сортировать результаты по нескольким столбцам, перечислив их через запятую. База данных сначала выполняет сортировку по первому столбцу, а если в этом столбце есть одинаковые значения, она сортирует эти дубликаты по второму столбцу и так далее.

Пример: Сортировка по фамилии, затем по имени

Это полезно, когда несколько актеров имеют одинаковую фамилию.

SELECT first_name, last_name
FROM actor
ORDER BY last_name, first_name; -- Сначала по last_name, затем по first_name при совпадениях

Сортировка по выражениям

Сортировать можно не только по исходным столбцам, но и по выражениям. SQL сначала вычисляет выражение для каждой строки (например, числовой, текстовый или булев результат), а затем ORDER BY сортирует строки по этим вычисленным значениям как по ключу сортировки.

Пример 1: Сортировка по числовому выражению

Отсортировать фильмы по длительности аренды в неделях (rental_duration / 7):

SELECT title, rental_duration
FROM film
ORDER BY rental_duration / 7 DESC;

Пример 2: Сортировка по текстовому выражению

Отсортировать актеров по полному имени без учета регистра:

SELECT first_name, last_name
FROM actor
ORDER BY LOWER(first_name || ' ' || last_name);

Пример 3: Сортировка по булевому выражению

Показать сначала фильмы с рейтингом 'G':

SELECT title, rating
FROM film
ORDER BY (rating = 'G') DESC, title;

Сортировка по булевым выражениям может отличаться в разных диалектах SQL. Для полностью переносимого поведения используйте CASE:

SELECT title, rating
FROM film
ORDER BY CASE WHEN rating = 'G' THEN 0 ELSE 1 END, title;

Сортировка по псевдонимам столбцов или позициям

В большинстве диалектов SQL вы также можете выполнять сортировку по псевдониму столбца или его порядковому номеру в списке SELECT.

Пример: Сортировка по псевдониму

SELECT first_name || ' ' || last_name AS full_name
FROM actor
ORDER BY full_name;

Пример: Сортировка по позиции

-- Сортировка по второму столбцу (last_name)
SELECT first_name, last_name
FROM actor
ORDER BY 2;

Ключевые выводы этого урока:

  • Используйте ORDER BY для сортировки строк в результирующем наборе.
  • ASC (по умолчанию) сортирует по возрастанию; DESC сортирует по убыванию.
  • Вы можете выполнять сортировку по нескольким столбцам для более точного упорядочивания.
  • Вы можете сортировать по выражениям, возвращающим числовые, текстовые или булевы результаты.
  • Сортировку также можно выполнять с использованием псевдонимов столбцов или их числовых позиций.

В следующем уроке мы изучим агрегатные функции, которые позволяют нам выполнять вычисления над наборами данных.