Агрегатні функції... Ці штуки — справжні чарівники у світі аналізу даних! Вони допомагають перетворювати мільйони рядків даних у стислий і зрозумілий результат. З їх допомогою можна рахувати, знаходити мінімуми й максимуми, усереднювати значення і робити ще купу всього. А тепер давай розберемо все по порядку.
Агрегатні функції — це спеціальні функції SQL, які виконують операції над групами рядків і повертають єдиний результат. Якщо провести аналогію, це якби ти зібрав усю статистику про свою ранкову каву, наприклад: скільки чашок ти випив за тиждень, додавав цукор чи скільки днів поспіль додавав вершки.
Приклади задач, які вирішують агрегатні функції:
- Порахувати загальну кількість записів у таблиці.
- Знайти мінімальні або максимальні значення в числовому стовпці.
- Підсумувати значення в одному зі стовпців.
- Усереднити всі значення стовпця.
- Виділити унікальні значення.
Як це працює "під капотом"?
SQL виконує агрегатну функцію після вибірки даних у SELECT. Наприклад, коли ти вказуєш SUM() або AVG(), SQL спочатку збирає дані, а потім виконує обчислення тільки для вибраних рядків.
Основні агрегатні функції в PostgreSQL
Давай перейдемо до практики і подивимось на топ-5 наших героїв:
COUNT()— рахує кількість рядків.SUM()— підсумовує значення числового стовпця.AVG()— обчислює середнє значення.MIN()— знаходить мінімальне значення.MAX()— знаходить максимальне значення.
Приклади використання агрегатних функцій
- Підрахунок рядків за допомогою
COUNT()
Функція COUNT() дозволяє порахувати загальну кількість рядків у таблиці або кількість непорожніх значень у конкретному стовпці.
Приклад: припустимо, у нас є таблиця students, яка зберігає інформацію про студентів:
| id | name | age | grade |
|---|---|---|---|
| 1 | Otto Art | 20 | 85 |
| 2 | Maria Chi | 22 | 90 |
| 3 | Alex Lin | 21 | 78 |
| 4 | Anna Song | 23 | NULL |
Порахуємо загальну кількість студентів:
SELECT
COUNT(*) AS total_students
FROM students;
Результат:
| total_students |
|---|
| 4 |
Тепер порахуємо кількість студентів, у яких вказано grade:
SELECT
COUNT(grade) AS students_with_grades
FROM students;
Результат:
| students_with_grades |
|---|
| 3 |
Чому так вийшло? Бо COUNT(column) ігнорує значення NULL.
- Підсумовування за допомогою
SUM()
Функція SUM() використовується для підсумовування всіх значень у числовому стовпці.
Приклад: давай дізнаємось, скільки сумарно балів набрали наші студенти.
SELECT
SUM(grade) AS total_grades
FROM students;
Результат:
| total_grades |
|---|
| 253 |
Примітка: Якщо у стовпці є NULL, вони просто ігноруються при підсумовуванні.
- Середнє значення за допомогою
AVG()
Функція AVG() обчислює середнє значення по всіх числових записах у стовпці.
Приклад: порахуємо середній бал студентів.
SELECT
AVG(grade) AS average_grade
FROM students;
Результат:
| average_grade |
|---|
| 84.33 |
Ти міг помітити, що NULL знову ігноруються.
- Мінімум і максимум з
MIN()таMAX()
Іноді треба знайти найменше або найбільше значення. Для цього існують MIN() і MAX().
Приклад: Знайдемо наймолодшого і найстаршого студента.
SELECT
MIN(age) AS youngest_student,
MAX(age) AS oldest_student
FROM students;
Результат:
| youngest_student | oldest_student |
|---|---|
| 20 | 23 |
Детальніше про ці функції поговоримо вже у наступних лекціях.
Знайомство з NULL
Про NULL скоро буде окрема лекція, але якщо дуже коротко, то NULL — це відсутність значення. Нічого. Пустота. Нулик, як він є!
Припустимо, у нас є таблиця students, яка зберігає інформацію про студентів:
| id | name | age | grade | hobbie |
|---|---|---|---|---|
| 1 | Otto Art | 20 | 85 | |
| 2 | Maria Chi | 22 | 90 | Танці |
| 3 | Alex Lin | 21 | 78 | |
| 4 | Anna Song | 23 |
Ім'я та вік є завжди, а от оцінка і хобі можуть бути відсутніми. Якщо в комірці таблиці взагалі немає жодного значення, то про неї кажуть, що вона містить NULL. NULL — це не число і не рядок, це спеціальне кодове позначення, яке означає відсутність будь-якого значення.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ