Агрегація та Групування в SQL
Свайпніть щоб показати меню
Агрегація в SQL використовує оператор GROUP BY для впорядкування необроблених даних у підсумкові рядки. Завдяки використанню функцій, таких як SUM(), AVG() та COUNT(), можна перетворити мільйони рядків на корисні бізнес-метрики безпосередньо у SQL-комірці.
Для багатьох SQL є найбільш природною мовою для підсумовування даних. Синтаксис дуже зрозумілий і має логічну послідовність: виберіть категорії, визначте математичні операції та задайте групи. У цьому розділі буде використано тимчасове подання, створене раніше, для виконання тих самих агрегацій, що й у Python, але з простотою SQL.
Оператор GROUP BY
У SQL будь-який стовпець, який не підсумовується математично, повинен бути включений до оператора GROUP BY наприкінці запиту. Це вказує SQL-движку, як саме розбити дані на групи.
SELECT cut, COUNT(*)
FROM diamond_view
GROUP BY cut
Використання вбудованих агрегатних функцій
SQL надає кілька стандартних функцій для виконання обчислень над числовими стовпцями:
- SUM(): підсумовує всі значення у стовпці;
- AVG(): обчислює середнє значення;
- MIN() / MAX(): знаходить найменше або найбільше значення;
- COUNT(): повертає кількість рядків.
%sql
SELECT
cut,
SUM(x),
AVG(y)
FROM diamond_view
GROUP BY cut
Використання псевдонімів для професійних звітів
За замовчуванням SQL може позначати результуючі стовпці як sum(Total_Profit). Щоб зробити ваші результати придатними для бізнес-дашборду, використовуйте ключове слово AS для перейменування цих стовпців на більш описові назви.
%sql
SELECT
cut,
SUM(x) AS Total_Length,
MAX(y) AS Highest_Diamond_Value
FROM diamond_view
GROUP BY cut
Фільтрація агрегованих даних: оператор HAVING
Поширена помилка — спроба відфільтрувати агрегований результат за допомогою WHERE. У SQL оператор WHERE фільтрує окремі рядки до їх групування. Якщо потрібно відфільтрувати результати після підсумовування (наприклад, показати лише регіони з прибутком понад $1 000 000), слід використовувати оператор HAVING.
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
HAVING Total_Length > 4000
Сортування підсумків
Для виділення ключових інсайтів завжди використовуйте ORDER BY. Це дозволяє впорядкувати результати, наприклад, показати найбільш прибуткові регіони на початку таблиці.
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
ORDER BY Total_Length DESC
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат