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

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

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

Один із найпопулярніших сценаріїв роботи з базами даних — підготовка даних для звітності. Уяви ситуацію: ти працюєш в університеті, і твій начальник (який, звісно, нічого не тямить у SQL) просить тебе зробити список студентів з об'єднанням імені та прізвища, а ще вказати дату народження у форматі DD-MM-YYYY. Задача зрозуміла: треба красиво оформити дані. І тут SQL — наш вірний помічник.

Приклад 1: Об'єднання імені та прізвища

Почнемо з об'єднання імені (first_name) та прізвища (last_name) студентів з нашої таблиці students.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name
FROM 
    students;

Що тут відбувається?

  • CONCAT() об'єднує рядки. Ми додаємо пробіл між іменем і прізвищем для наочності.
  • Результат зберігається в новому стовпці full_name.

Результат може виглядати так:

full_name
Otto Art
Anna Song
Pol Mac

Приклад 2: Форматування дати

Тепер додамо до нашого запиту форматування дати народження.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students;

Нове тут:

  • Ми застосовуємо функцію TO_CHAR() до поля birth_date.
  • Формат 'DD-MM-YYYY' перетворює дату у зручний вигляд (наприклад: 25-12-2001).

Результат:

full_name formatted_birth_date
Otto Art 12-04-1995
Anna Song 03-08-1996
Pol Mac 21-11-1997

Вуаля! Ти щойно зробив гарний звіт.

Форматування для експорту даних

Уявімо, що один із твоїх колег хоче вивантажити дані про замовлення у CSV-файл для подальшої роботи в Excel. Але дані в базі зберігаються у незручному для нього форматі, а люди з відділу продажів вимагають конкретного вигляду. Наприклад, замість поля total_price, де вказана ціна замовлення, вони хочуть бачити її у форматі: $100.00.

Приклад 3: Перетворення чисел у формат валюти

Оформимо дані про замовлення з таблиці orders для експорту:

SELECT
    order_id,
    TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM 
    orders;

Що робить TO_CHAR() у цьому випадку?

  • FM (Fill Mode) прибирає зайві пробіли.
  • $ додає символ валюти.
  • 999,999.00 задає формат з тисячними роздільниками і двома знаками після крапки.

Результат:

order_id formatted_price
1 $1,000.00
2 $2,500.50
3 $10.00

Тепер твій колега може легко імпортувати дані в Excel і похвалити тебе на мітингу.

Фінальне завдання

Ось тут починається найцікавіше. Давай об'єднаємо всі навички, які ти вже освоїв.

Завдання

Створи запит для таблиці students, який:

  1. Об'єднує ім'я та прізвище в один стовпець full_name.
  2. Перетворює дату народження у формат DD-MM-YYYY.
  3. Відображає вік студента на поточну дату.

Запит буде виглядати приблизно так:

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
    DATE_PART('year', AGE(birth_date)) AS age
FROM 
    students;

Нові елементи:

  • AGE(birth_date) повертає інтервал між поточною датою і датою народження, але у форматі років, місяців і днів.
  • DATE_PART('year', AGE(birth_date)) витягує з цього інтервалу тільки кількість років.

Результат:

full_name formatted_birth_date age
Otto Art 12-04-1995 28
Anna Song 03-08-1996 27
Pol Mac 21-11-1997 25

Такий звіт задовольнить навіть найприскіпливіших колег.

Форматування для специфічних умов

Іноді форматування даних потрібно для створення умов або фільтрації. Наприклад, дістанемо студентів, у яких день народження припадає на поточний місяць.

Приклад 4: Фільтрація за місяцем

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
WHERE 
    DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);

Як це працює?

  • DATE_PART('month', birth_date) витягує місяць з дати народження.
  • CURRENT_DATE дає поточну дату. Ми беремо з неї місяць за допомогою DATE_PART().

Поєднання форматування і сортування

Тепер об'єднаємо все, що дізналися, і додамо сортування. Наприклад, зробимо список студентів, відсортованих за їхньою датою народження.

Приклад 5: Сортування за датою народження

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
ORDER BY 
    birth_date ASC;

Сортування у порядку зростання ASC покаже спочатку найстарших студентів, а у порядку спадання DESC — наймолодших.

Поєднання з унікальними значеннями

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

Приклад 6: Унікальні значення і сортування

SELECT DISTINCT
    city 
FROM 
    students
ORDER BY 
    city ASC;

Що робить DISTINCT?

Він прибирає дублікати, щоб у результатах було вказано кожне місто лише один раз.

Навіщо це все потрібно?

Зручність і краса. Коли дані оформлені гарно, з ними простіше працювати, а начальники менше задають питань.

Готовність до реального життя. Ти зможеш автоматично генерувати звіти, працювати з експортами і готувати круті презентації.

Підвищення твоєї цінності. SQL — це не просто про дані. Це про те, як зробити їх зрозумілими і корисними.

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

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