JavaRush /Курси /SQL SELF /Сортування даних (ORDER BY): зростаюче та спадне сортуван...

Сортування даних (ORDER BY): зростаюче та спадне сортування (ASC, DESC)

SQL SELF
Рівень 2 , Лекція 3
Відкрита

Коли ти працюєш з базами даних, часто треба бачити порядок у даних. Наприклад:

  • "Покажи мені топ-10 найдорожчих продуктів."
  • "Які замовлення були останніми?"
  • "Який вік учнів, починаючи з наймолодших?"

Бажання впорядкувати дані цілком природне: навіть якщо ти суперкрутий програміст, розгрібати хаотичний набір рядків — не найприємніше заняття. Саме тому SQL дає нам інструмент для сортування рядків у повернутому результаті — оператор ORDER BY.

Основи сортування з ORDER BY

ORDER BY — це чарівна паличка, яка дозволяє впорядковувати рядки у результуючому наборі. Без неї дані повертаються у "довільному" порядку (це не помилка бази даних, просто порядок не гарантується).

Ось як виглядає синтаксис ORDER BY:

SELECT колонка1, колонка2
FROM таблиця
ORDER BY колонка1 DESC;
  • колонка1: ім'я стовпця, за яким ти хочеш сортувати.
  • ASC: сортування за зростанням (це значення за замовчуванням, тому можеш його не писати).
  • DESC: сортування за спаданням.

Приклад

Припустимо, у нас є таблиця students:

id name age
1 Alex 22
2 Maria 19
3 Otto 21

Давай відсортуємо студентів за віком (за зростанням):

SELECT name, age
FROM students
ORDER BY age ASC;

Результат:

name age
Maria 19
Otto 21
Alex 22

Якщо змінити напрямок сортування на спадний:

SELECT name, age
FROM students
ORDER BY age DESC;

Результат буде таким:

name age
Alex 22
Otto 21
Maria 19

Сортування по кількох стовпцях

Іноді одного стовпця для сортування недостатньо. Уяви, що в базі кілька студентів одного віку, і ти хочеш додати додаткове впорядкування, наприклад, за ім'ям.

Сортування по кількох стовпцях:

SELECT колонка1, колонка2
FROM таблиця
ORDER BY колонка1 DESC, колонка2 ASC;

Наведемо приклад для такої таблиці:

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Запит:

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Результат:

name age
Anna 19
Maria 19
Otto 21
Alex 22

Тут спочатку йде сортування за віком (за зростанням), а всередині кожного віку — за ім'ям в алфавітному порядку.

Сортування з псевдонімами

Якщо ти використовуєш псевдоніми (аліаси) для стовпців, ти можеш також сортувати за цими псевдонімами.

SELECT name AS "Ім'я", age AS "Вік"
FROM students
ORDER BY "Вік" DESC;

Результат:

Ім'я Вік
Alex 22
Otto 21
Maria 19

Чому це важливо? Бо раніше цього не було, і були складнощі з сортуванням по обчислюваних стовпцях.

Сортування з обчислюваними стовпцями

SQL дозволяє робити обчислення прямо в запиті, а потім сортувати за результатами цих обчислень.

Приклад 1. Найпростіший розрахунок

SELECT name, age, age * 2 AS doubled_age
FROM students
ORDER BY doubled_age DESC;

Результат:

name age doubled_age
Alex 22 44
Otto 21 42
Maria 19 38

Приклад 2. Використання функцій. Припустимо, ми зберігаємо ціни на продукти у таблиці products:

product_name price
Товар A 100
Товар B 200
Товар C 150

А тепер сортуємо за округленою ціною, помноженою на 0.9 (наприклад, з урахуванням знижки). Функція ROUND повертає число, округлене до потрібного знаку після коми.

SELECT product_name, price, ROUND(price * 0.9, 1) AS discounted_price
FROM products
ORDER BY discounted_price ASC;

Ось такий буде результат:

product_name price discounted_price
Товар A 100 90
Товар C 150 135
Товар B 200 180

Практичне застосування сортування

Сортування грає ключову роль у таких сценаріях:

  • Побудова звітів, наприклад, топ-10 найкращих продажів за місяць.
  • Вивід даних для користувацьких інтерфейсів, наприклад, список замовлень, відсортований за датою.
  • Генерація списків для аналітики, наприклад, виділення груп за пріоритетом.

Типові помилки при використанні ORDER BY

Помилки можуть чекати на кожному кроці. Ось кілька моментів, на які варто звернути увагу:

  • Якщо ти намагаєшся сортувати за стовпцем, якого не існує, отримаєш помилку: column "not_a_column" does not exist.
  • Сортування за псевдонімом, який використовується у обчислюваному стовпці, може бути заплутаним, якщо псевдонім заданий на рівні вище.
  • Якщо ти випадково забудеш вказати напрямок сортування, PostgreSQL за замовчуванням застосує ASC. Це не помилка, але може призвести до неочікуваних результатів.

Тепер ти знаєш, як керувати сортуванням у PostgreSQL за допомогою ORDER BY. Запам'ятай, що правильно організовані дані — це половина успіху при створенні ефективних SQL-запитів. Вперед до наступної теми! 😉

1
Опитування
Вступ до SQL, рівень 2, лекція 3
Недоступний
Вступ до SQL
Вступ до SQL
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ