JavaRush /Курсы /SQL SELF /Форматирование данных

Форматирование данных

SQL SELF
5 уровень , 0 лекция
Открыта

Давайте начнем с банальной, но жизненно важной истины: данные сами по себе зачастую "сыроваты". Неразобранный поток цифр, дат или строк сложен для восприятия. Представьте отчёт, где даты указаны в разных форматах: что-то записано как 01/02/2023, а что-то как 2023-02-01. Это может запутать даже самых внимательных аналитиков. Вот тут и приходит на помощь волшебство форматирования данных.

Форматирование данных позволяет:

  • Преобразовывать данные в удобный для восприятия вид, что упрощает работу с ними.
  • Становиться лайфхакером в анализе данных, быстро извлекая нужную информацию.
  • Подготавливать данные для экспорта или интеграции с другими системами.
  • Делать отчёты и визуализации читабельными и точными.

Представьте, что вы работаете в университете и вам нужно создать отчёт, чтобы перечислить всех студентов с их полным именем, датой рождения и факультетом. Вместо того чтобы вручную склеивать данные, вы используете запрос с форматированием, к оторое объединяет имя и фамилию в одном столбце, а дату рождения выводит в понятном виде, например, 12 марта 2001.

Основные задачи форматирования данных

Форматирование можно сравнить с нарезанием фруктового салата. Вам нужно не просто взять кучу фруктов и бросить их в миску, но и красиво нарезать и разложить всё на блюде. В SQL эта работа делится на несколько типов задач:

Форматирование строк

Это может включать объединение строк, преобразование регистра (замена всех символов на заглавные или строчные), добавление или удаление пробелов и символов.

Форматирование чисел

В некоторых случаях полезно преобразовать числа в строки или округлить их до нужного количества знаков после запятой.

Работа с датами и временем

Здесь можно автоматизировать задачи вроде получения текущей даты, форматирования временных данных или извлечения определённых частей даты (например, только год или только месяц).

Извлечение уникальных значений

Если вашему отчёту нужно показывать только уникальные записи (например, уникальные города или факультеты), то это тоже относится к форматированию данных.

Инструменты для форматирования в PostgreSQL

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

Форматирование строк

  • CONCAT(): объединение строк.
  • UPPER(), LOWER(): изменение регистра текста.

Форматирование дат и времени

  • NOW(): текущая дата и время.
  • CURRENT_DATE: текущая дата (без времени).
  • DATE_PART(): извлечение частей даты, например, года или месяца.

Преобразование типов

  • CAST(): изменение типа данных.
  • Синтаксис: <значение>::<тип>.

Сортировка данных

  • ORDER BY: сортировка данных по одному или нескольким столбцам.
  • DISTINCT: извлечение уникальных значений.

Пример форматирования данных: как это выглядит на практике?

Чтобы вас заинтересовать, давайте разберем несколько примеров. Начнём с простого.

Пример 1: Форматирование строки

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

Этот запрос объединяет first_name и last_name в один столбец full_name. Например, если имя студента — "Otto", а фамилия — "Art", результат будет: "Otto Art".

Пример 2: Форматирование даты

SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students;

Здесь мы извлекаем только год рождения из столбца date_of_birth. Если дата рождения в базе — 2001-03-15, результат будет 2001.

Пример 3: Преобразование типов

SELECT birth_year::text || ' год' AS formatted_year
FROM (
  SELECT DATE_PART('year', date_of_birth) AS birth_year
  FROM students
) subquery;

В этом запросе мы сначала извлекаем год рождения, а затем преобразуем его в строку, добавляя строку " год". Например, результат будет: 2001 год.

Где это используется?

Отчёты для менеджеров

Не все хотят видеть "сырые" данные. Например, в отчёте об обороте компании лучше указывать суммы с разделением на тысячные (1,000,000 вместо 1000000), а даты — в формате 21 FEB 2025.

Отчёты для клиентов

Например, письмо клиенту с текстом: "Уважаемый [Имя Фамилия], ваш заказ N123 был успешно доставлен 12 октября 2023 года".

Интеграция с другими системами

Некоторые формы ввода требуют определённого формата данных: даты могут быть в формате ISO, строки — с учётом регистра, числа — округлёнными.

Аналитика и визуализация

Представьте, что вы строите графики или диаграммы. Без форматирования графики могут выглядеть очень некорректно.

2
Задача
SQL SELF, 5 уровень, 0 лекция
Недоступна
Объединение строк
Объединение строк
2
Задача
SQL SELF, 5 уровень, 0 лекция
Недоступна
Преобразование чисел и добавление текста
Преобразование чисел и добавление текста
Комментарии (8)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Сергей Третяк Уровень 14
5 октября 2025
select sale_id, product_name, total_amount::text ||' USD' as formatted_amount from sales;
Анжелика Уровень 1
16 августа 2025
SELECT sale_id, product_name, CAST(total_amount AS TEXT) || ' USD' AS formatted_amount FROM sales;
Anemon Уровень 13 Expert
31 июля 2025
🤓
Artem Уровень 5
7 июля 2025
CONCAT(total_amount, ' USD') AS formatted_amount
Alexandr Уровень 16
27 июня 2025
CAST(total_amount AS text) || ' USD'
Anton Zhukov Уровень 12
20 июня 2025
При создании таблицы из IDE

Error executing CREATE statement. ОШИБКА: схема для создания объектов не выбрана
  Position: 14 - Connection: postgres@localhost: 114ms
Серега Батенин Уровень 12
21 июня 2025
Да оно и в браузере странно работает) структура проекта пустая. Валидация решения проходит, но в разделе вывода тоже ошибки, что таблицы нет))
Anton Zhukov Уровень 12
21 июня 2025
Кароч решил схему public использовать)