JavaRush /Курси /SQL SELF /Приклади форматування та сортування даних у реальних зада...

Приклади форматування та сортування даних у реальних задачах

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

Сортування та форматування даних — важливі скіли, які дозволяють готувати зручні для читання звіти, оптимізувати аналіз даних і покращувати взаємодію з користувачами. Ці знання знадобляться тобі при створенні аналітичних звітів, підготовці даних для експорту, а також у повсякденній роботі з базами даних. На практиці ти часто стикаєшся із задачами, де дані треба красиво відформатувати, видалити дублікати записів і відсортувати інформацію для зручності сприйняття. Саме цим ми сьогодні й займемося!

Приклад 1: Створення списку унікальних клієнтів з об'єднанням імені та прізвища, відсортованого за прізвищем

У нас є таблиця customers, в якій зберігаються дані про клієнтів:

id first_name last_name city
1 Alex Lin New York
2 Maria Chi Los Angeles
3 Alex Lin New York
4 Anna Song Chicago

Наша ціль:

  1. Об'єднати first_name і last_name в один стовпець full_name.
  2. Витягнути тільки унікальних клієнтів.
  3. Відсортувати список за прізвищем (last_name).

SQL-запит

SELECT DISTINCT
    CONCAT(first_name, ' ', last_name) AS full_name,
    city
FROM customers
ORDER BY last_name;
full_name city
Maria Chi Los Angeles
Alex Lin New York
Anna Song Chicago

Зверни увагу, що дублікати Alex Lin були видалені завдяки DISTINCT, а повний список був відсортований за прізвищем в алфавітному порядку.

Приклад 2: Форматування даних про замовлення та їх сортування

У таблиці orders зберігаються дані про замовлення:

order_id customer_name order_date total_amount
1 Alex Lin 2023-10-01 1500
2 Maria Chi 2023-10-02 2000
3 Alex Lin 2023-10-03 1500
4 Anna Song 2023-10-04 3000

Наша ціль:

  1. Створити стовпець formatted_order_date, де дата замовлення буде у форматі DD-MM-YYYY.
  2. Видалити дублікати клієнта і дати (залишити унікальні комбінації customer_name і order_date).
  3. Відсортувати замовлення за датою у спадаючому порядку.
  4. SQL-запит
SELECT DISTINCT
customer_name,
TO_CHAR(order_date, 'DD-MM-YYYY') AS formatted_order_date,
total_amount
FROM orders
ORDER BY order_date DESC;

Результат:

customer_name formatted_order_date total_amount
Anna Song 04-10-2023 3000
Alex Lin 03-10-2023 1500
Maria Chi 02-10-2023 2000

Зверни увагу, як за допомогою функції TO_CHAR() ми перетворили дату у формат DD-MM-YYYY, а завдяки DISTINCT прибрали дублікати записів.

Приклад 3: Витягування унікальних комбінацій "ім'я + прізвище" студентів і сортування за прізвищем та датою народження

У таблиці students знаходяться дані про студентів:

student_id first_name last_name birth_date
1 Alex Lin 2001-03-15
2 Maria Chi 2000-06-20
3 Alex Lin 2001-03-15
4 Anna Song 1999-10-10

Наша ціль:

  • Об'єднати ім'я та прізвище в один стовпець full_name.
  • Витягнути унікальні комбінації "ім'я + прізвище".
  • Відсортувати студентів за прізвищем, а потім за датою народження.
SELECT DISTINCT
    CONCAT(first_name, ' ', last_name) AS full_name,
    birth_date
FROM students
ORDER BY last_name, birth_date;

Результат:

full_name birth_date
Maria Chi 2000-06-20
Alex Lin 2001-03-15
Anna Song 1999-10-10

Особлива увага: два однакових записи про студента "Alex Lin" були об'єднані в один рядок, а впорядкування виконано спочатку за прізвищем, потім за датою народження.

Практичне завдання

Застосуй знання, отримані сьогодні, для вирішення наступної задачі:

Задача: У тебе є таблиця products, яка містить такі дані:

product_id category product_name price
1 Електроніка Телефон 50000
2 Одяг Куртка 8000
3 Електроніка Ноутбук 70000
4 Одяг Куртка 8000
  1. Створи стовпець formatted_product, у якому product_name буде об'єднано з категорією через дефіс, наприклад: Телефон - Електроніка.
  2. Видали дублікати комбінацій product_name і category.
  3. Відсортуй товари за категорією, а потім за ціною (від найдешевшого до найдорожчого).

Нижче пропонується структура запиту для виконання завдання:

SELECT DISTINCT
    CONCAT(product_name, ' - ', category) AS formatted_product,
    price
FROM products
ORDER BY category, price ASC;

Спробуй самостійно уявити результат роботи цього запиту!

Використання функцій CONCAT(), DISTINCT і ORDER BY дозволяє досягати високої читабельності та структурованості даних, що критично важливо у реальних проектах і задачах. Переконайся, що ти розумієш, як їх комбінувати, практикуючись на прикладах!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ