Агрегатні функції
Основні агрегатні функції
| Функція | Опис | Приклад |
|---|---|---|
| COUNT() | Кількість записів | COUNT(*) |
| SUM() | Сума значень | SUM(price) |
| AVG() | Середнє значення | AVG(age) |
| MIN() | Мінімальне значення | MIN(price) |
| MAX() | Максимальне значення | MAX(price) |
COUNT - підрахунок
-- Кількість всіх користувачів
SELECT COUNT(*) FROM users;
-- Кількість унікальних категорій
SELECT COUNT(DISTINCT category) FROM products; SUM - сума
-- Загальна сума замовлень
SELECT SUM(total) FROM orders;
-- Сума замовлень конкретного користувача
SELECT SUM(total) FROM orders WHERE user_id = 1; AVG - середнє
-- Середній вік користувачів
SELECT AVG(age) FROM users;
-- Середня ціна товарів
SELECT AVG(price) FROM products; MIN та MAX
-- Найдешевший та найдорожчий товар
SELECT MIN(price), MAX(price) FROM products;
-- Наймолодший та найстарший користувач
SELECT MIN(age), MAX(age) FROM users; GROUP BY - групування
Групує записи для агрегації по категоріях:
-- Кількість товарів у кожній категорії
SELECT category, COUNT(*) AS count
FROM products
GROUP BY category; -- Сума замовлень по користувачах
SELECT user_id, SUM(total) AS total_spent
FROM orders
GROUP BY user_id; HAVING - фільтрація груп
WHERE фільтрує рядки, HAVING фільтрує групи:
-- Категорії з більш ніж 2 товарами
SELECT category, COUNT(*) AS count
FROM products
GROUP BY category
HAVING COUNT(*) > 2; -- Користувачі, що витратили більше 10000
SELECT user_id, SUM(total) AS total_spent
FROM orders
GROUP BY user_id
HAVING SUM(total) > 10000; Порядок виконання:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
Комбінування всього
SELECT
u.name,
COUNT(o.id) AS order_count,
SUM(o.total) AS total_spent,
AVG(o.total) AS avg_order
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 0
ORDER BY total_spent DESC; Практика
Спробуй в SQL пісочниці:
SELECT COUNT(*) AS total_users
FROM users; SELECT
category,
COUNT(*) AS product_count
FROM products
GROUP BY category; SELECT
AVG(price) AS average_price,
MIN(price) AS min_price,
MAX(price) AS max_price
FROM products; SELECT
user_id,
SUM(total) AS total_spent
FROM orders
GROUP BY user_id
ORDER BY total_spent DESC; Вітаємо!
Ти завершив базовий курс SQL!
Тепер ти знаєш:
- SELECT, WHERE, ORDER BY, LIMIT
- INSERT, UPDATE, DELETE
- CREATE TABLE та типи даних
- JOIN для об'єднання таблиць
- Агрегатні функції та GROUP BY