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