SQL коротко (2)
Ще одне поширене завдання з базами даних — агрегація. Тобто зменшення даних шляхом поділу їх на частини та підсумовування кожної частини.
У SQL це робиться за допомогою команди GROUP BY. Вона розбиває дані на групи та застосовує функцію з вашого оператора SELECT до кожної групи.
Наприклад, якщо ви хочете порахувати кількість рейсів з кожного з двох аеропортів вильоту, можна використати запит
SELECT COUNT(*) FROM flights
GROUP BY origin;
GROUP BY origin вказує SQL, що у виводі має бути рядок для кожного унікального значення стовпця origin. Оператор SELECT обирає значення, якими ви хочете заповнити кожен зі стовпців. Тут ми хочемо COUNT() — порахувати кожен рядок у кожній з груп.
Можна використовувати GROUP BY за більш ніж одним стовпцем. Тоді у підсумковій таблиці буде рядок для кожної комбінації унікальних значень у кожному стовпці. Наступний запит рахує кількість рейсів із SEA та PDX до кожного аеропорту призначення:
SELECT origin, dest, COUNT(*) FROM flights
GROUP BY origin, dest;
Вивід міститиме рядок для кожної комбінації значень у origin і dest (тобто рядок для кожної пари аеропорту вильоту та призначення, куди виконувався рейс). Також буде стовпець із COUNT() усіх рядків у кожній групі.
Пам'ятайте, поглиблений огляд SQL можна знайти тут.
Яку інформацію поверне цей запит? Нагадаємо, таблиця flights містить дані про рейси, що вилітали з PDX і SEA у 2014 та 2015 роках. Зверніть увагу: функція AVG() обчислює середнє значення стовпця!
SELECT AVG(air_time) / 60 FROM flights
GROUP BY origin, carrier;
Ця вправа є частиною курсу
Основи PySpark
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу