GROUP BY в PostgreSQL: группировка строк

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.