Агрегатні функції в SQL

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

pic

Що таке агрегатні функції?

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

Загальні агрегатні функції в SQL

SUM

  • Обчислює суму числового стовпця.
  • Приклад використання: Загальний дохід від продажів, загальні витрати тощо.

AVG

  • Обчислює середнє значення числового стовпця.
  • Приклад використання: Середня заробітна плата, середня ціна продукту тощо.

COUNT

  • Підраховує кількість рядків або ненульових значень у стовпці.
  • Приклад використання: Загальна кількість транзакцій, загальна кількість працівників тощо.

MIN

  • Повертає найменше значення в стовпці.
  • Приклад використання: Найнижча ціна, мінімальна заробітна плата тощо.

MAX

  • Повертає найбільше значення в стовпці.
  • Приклад використання: Найвищий бал, максимальний прибуток тощо.

Ці функції часто комбінуються з такими клаузами, як GROUP BY та HAVING для фільтрації або організації результатів.

Приклад набору даних

Для демонстрації скористаємося уявною таблицею sales.

pic

Практичні приклади агрегатних функцій

1. Обчислення загальних продажів (SUM)

Щоб обчислити загальний дохід від продажів:

SELECT SUM(quantity * price) AS total_sales  
FROM sales;
  • Пояснення: Функція SUM обчислює загальний дохід, множачи quantity і price для кожного рядка та підсумовуючи їх.

2. Знаходження середньої ціни (AVG)

Щоб знайти середню ціну продуктів:

SELECT AVG(price) AS average_price  
FROM sales;
  • Пояснення: Функція AVG обчислює середнє значення стовпця price для всіх рядків.

3. Підрахунок транзакцій (COUNT)

Щоб підрахувати загальну кількість транзакцій:

SELECT COUNT(*) AS total_transactions  
FROM sales;
  • Пояснення: Функція COUNT(*) підраховує всі рядки в таблиці.

4. Знаходження максимальних і мінімальних цін (MAX, MIN)

Щоб знайти найвищі та найнижчі ціни в таблиці:

SELECT MAX(price) AS max_price, MIN(price) AS min_price  
FROM sales;
  • Пояснення: MAX визначає найбільше значення в стовпці price, а MIN — найменше.

Комбінування агрегатних функцій з GROUP BY

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

Приклад: Загальна кількість проданих одиниць на кожен продукт

Щоб обчислити загальну кількість проданих одиниць для кожного продукту:

SELECT product, SUM(quantity) AS total_quantity  
FROM sales  
GROUP BY product;
  • Пояснення: Клаузула GROUP BY групує рядки за стовпцем product, а SUM(quantity) обчислює загальну кількість проданих одиниць для кожної групи.

Фільтрація агрегованих даних за допомогою HAVING

Клаузула HAVING фільтрує агреговані дані після групування.
Це схоже на клаузу WHERE, але вона працює з агрегованими даними.

Приклад: Продукти з загальною кількістю > 3

Щоб знайти продукти, де загальна кількість проданих одиниць перевищує 3:

SELECT product, SUM(quantity) AS total_quantity  
FROM sales  
GROUP BY product  
HAVING SUM(quantity) > 3;
  • Пояснення: Клаузула HAVING фільтрує групи, де SUM(quantity) дорівнює 3 або менше.

Найкращі практики використання агрегатних функцій

  • Комбінуйте з GROUP BY: Завжди використовуйте GROUP BY, коли застосовуєте агрегатні функції до групованих даних.

Приклад: Обчислити загальний дохід для кожного регіону.

  • Фільтруйте на ранніх етапах: Використовуйте клаузу WHERE для фільтрації рядків перед агрегуванням.

Приклад: Фільтруйте рядки з price = 0 перед обчисленням загального доходу.

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

Загальні помилки, яких слід уникати

1. Використання агрегатних функцій без GROUP BY Приклад (Неправильно)

SELECT product, SUM(quantity)  
FROM sales;

Це викличе помилку, оскільки product не згруповано.

2. Плутанина між WHERE та HAVING

  • Використовуйте WHERE, щоб фільтрувати рядки до групування.
  • Використовуйте HAVING, щоб фільтрувати агреговані результати після групування.

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

  • Звіти та панелі моніторингу: Загальний дохід, середні витрати клієнтів, рейтинги продуктів.
  • Аналіз даних: Визначення високопродуктивних продуктів, обчислення коефіцієнтів відтоку.
  • Бізнес-інтелект: Обчислення KPI, аналіз трендів.

Підсумок

Агрегатні функції, такі як SUM, AVG, COUNT, MIN та MAX, є потужними інструментами для аналізу даних і складання звітів. Коли вони комбінуються з GROUP BY та HAVING, це дозволяє отримувати цінні висновки з ваших даних.

Перекладено з: Aggregate Functions in SQL

Leave a Reply

Your email address will not be published. Required fields are marked *