Команда GROUP BY позволяет группировать результаты при выборке из базы данных. К сгруппированным результатам можно применять любые функции (смотрите примеры).
Синтаксис
SELECT * FROM имя_таблицы WHERE условие GROUP BY поле_для_группировки
Таблицы для примеров
id айди |
name имя |
age возраст |
salary зарплата |
---|---|---|---|
1 | user1 | 23 | 400 |
2 | user2 | 25 | 500 |
3 | user3 | 23 | 500 |
4 | user4 | 30 | 900 |
5 | user5 | 27 | 500 |
6 | user6 | 28 | 900 |
Пример
В данном примере записи таблицы группируются
по возрасту (будет 3
группы - 23
года, 24
года и 25
лет). Затем
для каждой группы применяется функция SUM
, которая
суммирует зарплаты внутри данной группы.
В результате для каждой из групп (23 года,
24
года и 25
лет) будет подсчитана
суммарная зарплата внутри этой группы:
SELECT age, SUM(salary) as sum FROM employees GROUP BY age
Результат выполнения кода:
age возраст |
sum сумма |
---|---|
23 | 600 |
24 | 3000 |
25 | 900 |
Пример
В данном примере мы используем дополнительное
условие WHERE
,
чтобы взять не все записи из таблицы:
SELECT age, SUM(salary) as sum FROM employees WHERE id>=2 GROUP BY age
Результат выполнения кода:
age возраст |
sum сумма |
---|---|
23 | 500 |
24 | 3000 |
25 | 900 |
Пример
В данном примере записи группируются по возрасту
(будет 3
группы - 23
года,
24
года и 25
лет). Затем для
каждой группы применяется функция MAX
,
которая находит максимальную зарплату внутри
данной группы:
SELECT age, MAX(salary) as max FROM employees GROUP BY age
Результат выполнения кода:
age возраст |
max максимальная зарплата |
---|---|
23 | 300 |
24 | 2000 |
25 | 900 |
Пример
А теперь с помощью функции MIN
найдется минимальная зарплата внутри данной
группы:
SELECT age, MIN(salary) as min FROM employees GROUP BY age
Результат выполнения кода:
age возраст |
min минимальная зарплата |
---|---|
23 | 100 |
24 | 900 |
25 | 900 |
Пример
А теперь с помощью функции COUNT
найдется количество записей в группе:
SELECT age, COUNT(*) as count FROM employees GROUP BY age
Результат выполнения кода:
age возраст |
count количество |
---|---|
23 | 3 |
24 | 2 |
25 | 1 |
Смотрите также
-
команду
HAVING
,
которая позволяет накладывать условие на группы