GROUP BY в Oracle SQL: как группировать данные и считать суммы, средние и количества

🟢 Введение

Ключевое слово GROUP используется в SQL как часть конструкции GROUP BY, которая применяется для группировки строк по одному или нескольким столбцам, чтобы выполнять агрегатные вычисления — такие как SUM, AVG, COUNT, MIN, MAX.

GROUP BY помогает преобразовать табличные данные в сводную аналитику, показывая итоги по категориям.


🔤 Написание

Базовый синтаксис:

sql
SELECT столбец, агрегатная_функция
FROM таблица
GROUP BY столбец;

Пример:

sql
SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id;

🔄 Где часто используется

  • При построении отчётов и сводок

  • В аналитике по категориям, отделам, регионам

  • Вместе с агрегатными функциями

  • С конструкцией HAVING — для фильтрации сгруппированных данных

  • В представлениях и подзапросах


🧪 10 Примеров использования GROUP с пояснениями

1️⃣ Группировка и подсчёт количества

sql
SELECT department_id, COUNT(*) AS total_employees
FROM employees
GROUP BY department_id;

Сколько сотрудников в каждом отделе.


2️⃣ Группировка с суммой

sql
SELECT job_id, SUM(salary) AS total_salary
FROM employees
GROUP BY job_id;

Суммарная зарплата по каждой должности.


3️⃣ Группировка по двум полям

sql
SELECT department_id, job_id, COUNT(*) AS total
FROM employees
GROUP BY department_id, job_id;

Сколько сотрудников каждой должности в каждом отделе.


4️⃣ GROUP BY с ORDER BY

sql
SELECT job_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY job_id
ORDER BY avg_salary DESC;

Показать среднюю зарплату по должностям от наибольшей к меньшей.


5️⃣ GROUP BY с HAVING

sql
SELECT department_id, COUNT(*) AS total
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;

Отделы, в которых больше 5 сотрудников.


6️⃣ GROUP BY с NULL-значениями

sql
SELECT manager_id, COUNT(*) AS team_size
FROM employees
GROUP BY manager_id;

NULL-значения группируются отдельно — например, сотрудники без менеджера.


7️⃣ GROUP BY по вычисляемому выражению

sql
SELECT TRUNC(hire_date, 'YYYY') AS hire_year, COUNT(*)
FROM employees
GROUP BY TRUNC(hire_date, 'YYYY');

Сколько сотрудников нанято по годам.


8️⃣ GROUP BY в представлении

sql
CREATE OR REPLACE VIEW dept_summary AS
SELECT department_id, AVG(salary) AS avg_sal
FROM employees
GROUP BY department_id;

Представление с аналитикой по отделам.


9️⃣ GROUP BY с подзапросом

sql
SELECT job_id, MAX(avg_salary) AS highest_avg
FROM (
SELECT job_id, department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY job_id, department_id
)
GROUP BY job_id;

Группировка внутри группировки.


🔟 GROUP BY с агрегатами по всему набору

sql
SELECT department_id,
COUNT(*) AS total_employees,
MAX(salary) AS max_salary,
MIN(hire_date) AS first_hired
FROM employees
GROUP BY department_id;

Полная аналитика по каждому отделу.


🧩 Заключение

Ключевое слово GROUP в Oracle SQL делает возможной агрегацию данных по категориям.
Это основа для анализа: вы можете группировать, считать, суммировать, находить максимум и минимум — и строить отчёты любой сложности.

GROUP BY — один из самых востребованных инструментов в аналитике SQL.


🔜 Следующая статья:

Оператор HAVING в Oracle SQL — как фильтровать сгруппированные данные после агрегации

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии