JavaRush /Курси /SQL SELF /Створення базових звітів

Створення базових звітів

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

Перш ніж заплутатись у синтаксисі SQL і змінних, давай згадаємо: агрегатні функції — це твої найкращі друзі для підрахунку всього підряд. Вони допомагають рахувати сумарні дані, середні значення і творити іншу магію на великій кількості рядків.

Агрегатні функції використовують для виконання математичних операцій над групами рядків. Основні з них:

  • SUM(): рахує суму значень.
  • AVG(): обчислює середнє значення.
  • COUNT(): рахує кількість рядків у вибірці.

Агрегатні функції корисні, коли ти працюєш з великими обсягами даних і хочеш отримати короткий звіт: скільки у тебе замовлень, який їхній загальний обсяг, або який найбільший чек був сьогодні. Давай розглянемо кілька агрегатних функцій.

Підрахунок рядків: функція COUNT()

Функція COUNT() дозволяє порахувати кількість рядків у таблиці. Розберемо її роботу на прикладах.

-- Простий підрахунок всіх рядків у таблиці замовлень
SELECT COUNT(*) AS total_orders
FROM orders;

-- Підрахунок унікальних клієнтів
SELECT COUNT(DISTINCT customer_id) AS unique_customers
FROM orders;

-- Підрахунок замовлень, у яких сума більше 100
SELECT COUNT(*) AS high_value_orders
FROM orders
WHERE total_amount > 100;

Функція COUNT() часто використовується для підрахунку записів, унікальних значень, а також у комбінації з фільтрацією, наприклад, "скільки студентів записались на курси по Python".

Підсумовування даних: функція SUM()

Функція SUM() рахує суму значень у стовпці. Давай тепер порахуємо суму всіх покупок клієнтів.

-- Підрахунок загальної виручки
SELECT SUM(total_amount) AS total_revenue
FROM orders;

-- Сума покупок конкретного клієнта
SELECT SUM(total_amount) AS customer_spending
FROM orders
WHERE customer_id = 101;

-- Сума замовлень по категоріях
SELECT category, SUM(total_amount) AS category_revenue
FROM orders
GROUP BY category;

SUM() — це головний інструмент для аналітики продажів, виручки і будь-яких інших сум. Наприклад, треба дізнатись доходи бізнес-центру за останній місяць? Легко.

Середні значення: функція AVG()

Функція AVG() допомагає порахувати середнє значення по набору даних. Наприклад, середня оцінка студентів або середній чек клієнта.

-- Середня сума замовлення
SELECT AVG(total_amount) AS average_order_value
FROM orders;

-- Середня сума замовлень по категоріях
SELECT category, AVG(total_amount) AS average_order_value
FROM orders
GROUP BY category;

-- Середній чек клієнтів за останні 7 днів
SELECT AVG(total_amount) AS avg_check_last_week
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Середнє значення корисне для аналізу якості обслуговування, виявлення аномалій і розрахунку ключових метрик, типу середнього прибутку на клієнта.

Використання агрегатних функцій в аналітиці

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

Приклад 1: загальна виручка і кількість замовлень

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

SELECT
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue
FROM orders
WHERE order_date >= '2023-10-01' AND order_date <= '2023-10-31';

Приклад 2: середня виручка по категоріях

А якщо захочемо розбити виручку по категоріях товарів?

SELECT
    category,
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY category;

Приклад 3: замовлення за останні 7 днів

Часто треба аналізувати метрики за короткі періоди, наприклад, за останній тиждень.

SELECT
    COUNT(*) AS orders_last_week,
    SUM(total_amount) AS revenue_last_week,
    AVG(total_amount) AS avg_check_last_week
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Практичні кейси з конкретними задачами

Задача: Аналіз продажів по регіонах

Припустимо, ти власник мережі магазинів і хочеш аналізувати, як розподілилась виручка по регіонах.

SELECT
    region,
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS average_order_value
FROM orders
GROUP BY region
ORDER BY total_revenue DESC;

Задача: Топ-10 клієнтів по виручці

Тепер додамо трохи логіки, щоб виділити топ-10 клієнтів по загальній сумі замовлень.

SELECT
    customer_id,
    SUM(total_amount) AS total_spending
FROM orders
GROUP BY customer_id
ORDER BY total_spending DESC
LIMIT 10;

Задача: Порівняння виручки по днях тижня

Хочеш дізнатись, у які дні тижня твій бізнес заробляє найбільше? Ось приклад:

SELECT
    TO_CHAR(order_date, 'Day') AS day_of_week,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY TO_CHAR(order_date, 'Day')
ORDER BY total_revenue DESC;
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ