Группировка
Что такое группировка: определение, основные принципы, примеры и практические советы. Изучайте SQL для тестировщиков с подробными объяснениями для начинающих специалистов.
Группировка.
Группировка данных.
Оператор | Описание | Примеры применения |
---|---|---|
GROUP BY | Переход от работы с записями к работе с группами | GROUP BY department - группировка по отделам |
HAVING | Условие для групп, вместо оператора WHERE | HAVING COUNT(*) > 5 - группы с >5 записей |
Виды объединений таблиц (джоинов).
JOIN — Обновить таблицы.
INNER JOIN — выводит только совпадения из обеих таблиц.
LEFT JOIN — все данные из левой таблицы и только совпадения из правой.
RIGHT JOIN — все данные из правой таблицы и только совпадения из левой.
FULL JOIN — выводятся все данные из обеих таблиц.
SELECT поля_таблиц FROM таблица_1
[INNER] | [[LEFT | RIGHT | FULL][OUTER]] JOIN
таблица_2 ON условие_соединения
[[INNER] | [[LEFT | RIGHT | FULL][OUTER]] JOIN
таблица_n ON условие_соединения];
Практические примеры:
-- INNER JOIN - только совпадающие записи
SELECT u.username, p.name, p.price
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id;
-- LEFT JOIN - все пользователи, даже без заказов
SELECT u.username, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.username;
-- RIGHT JOIN - все продукты, даже не заказанные
SELECT p.name, COUNT(o.id) as order_count
FROM orders o
RIGHT JOIN products p ON o.product_id = p.id
GROUP BY p.id, p.name;
-- FULL OUTER JOIN - все записи из обеих таблиц
SELECT u.username, o.order_date
FROM users u
FULL OUTER JOIN orders o ON u.id = o.user_id;