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.