🙏 Спасибо за поддержку проекта. В прошлом месяце мы собрали только $32. Этого хватает на серверы, но не на разработку, поэтому новых уроков и функций в этом месяце не будет. Пожалуйста, поддержите следующий месяц. Поддержать →
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 сортирует по убыванию.
  • Вы можете выполнять сортировку по нескольким столбцам для более точного упорядочивания.
  • Вы можете сортировать по выражениям, возвращающим числовые, текстовые или булевы результаты.
  • Сортировку также можно выполнять с использованием псевдонимов столбцов или их числовых позиций.

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

Попробуйте решить следующие задачи, чтобы закрепить материал этого урока.

  1. Упорядоченный список фильмов
  2. Упорядоченный список языков
  3. Получить список клиентов
  4. Отсортируйте пингвинов