GROUP BY
в PostgreSQL используется для группировки строк по значениям одного или нескольких столбцов. Это позволяет агрегировать данные и применять к ним агрегатные функции, такие как COUNT
, SUM
, AVG
, MAX
, MIN
.
Группировка по одному столбцу
Группировка данных о пользователях по возрасту с подсчетом их количества:
SELECT age, COUNT(*) FROM users GROUP BY age;
Результат содержит уникальные значения age
и количество строк для каждого возраста.
Группировка по нескольким столбцам
Группировка по возрасту и городу:
SELECT age, city, COUNT(*) FROM users GROUP BY age, city;
В этом случае пользователи будут сгруппированы одновременно по age
и city
, а COUNT(*)
покажет количество пользователей в каждой группе.
Фильтрация групп с HAVING
HAVING
используется для фильтрации групп после группировки:
SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 5;
Выбираются только те возрастные группы, в которых более 5 пользователей.
Использование с агрегатными функциями
Пример получения среднего возраста в каждом городе:
SELECT city, AVG(age) FROM users GROUP BY city;
Функция AVG(age)
вычисляет средний возраст для каждой группы city
.