JavaRush/Курсы/Модуль 4. Работа с БД/Агрегатные функции

Агрегатные функции

Открыта

6.1 Список агрегатных функций

Когда ты используешь группировку строк в SQL с помощью оператора GROUP BY, то можешь использовать в операторе SELECT функции, которые работают над сгруппированными данными. Такие функции еще называют агрегатными функциями.

Вот список самых популярных из них:

# Функция Описание
1 COUNT() Возвращает количество значений в группе
2 SUM() Возвращает сумму значений в группе
3 MAX() Возвращает максимальное значение группы
4 MIN() Возвращает минимальное значение группы
5 AVG() Возвращает среднее значение группы
6 BIT_AND() Выполняет побитовое AND над всеми значениями группы
7 BIT_OR() Выполняет побитовое OR над всеми значениями группы
8 BIT_XOR() Выполняет побитовое XOR над всеми значениями группы
9 GROUP_CONCAT() Склеивает все значения группы в одну строку
Это не полный список агрегатных функций, но остальные очень специфические и я не думаю, что ты будешь ими пользоваться в ближайшие лет 5. Если же они все же вам понадобятся, вы всегда можете почитать официальную документацию по вашей СУБД.

А теперь давай рассмотрим несколько примеров с нашими агрегатными функциями.

6.2 Анализируем зарплаты сотрудников

Давай вычислим некоторую статистику по нашим сотрудникам из таблицы employee.

Вопрос первый: сколько у нас сотрудников?

Если мы хотим узнать количество всех записей в таблице, то для этого можно использовать агрегатную функцию COUNT. Запрос будет выглядеть так:

SELECT COUNT(*) FROM employee

И в качестве ответа MySQL вернет число 6. У нас 6 сотрудников в отделе, включая кота. Все верно.

Вопрос второй: сколько мы платим в месяц всем сотрудникам?

Чтобы ответить на этот вопрос нам нужно просуммировать зарплаты всех сотрудников. Для этого воспользуемся агрегатной функцией SUM()

Запрос будет выглядеть так:

SELECT SUM(salary) FROM employee

Обрати внимание, что в этот раз мы обязаны указать значения какой колонки мы суммируем. Мы указали колонку salary. Мы же не можем просто просуммировать все поля таблицы.

И в качестве ответа MySQL вернет число 461000. У нас 6 сотрудников в отделе, а зарплата 461 тысяча. Многовато.

И наконец третий вопрос: какая у нас максимальная и минимальная зарплаты в отделе? Ну и еще давайте среднюю зарплату посчитаем. Для этого нам понадобятся функции MIN, MAX и AVG.

Запрос будет немного посложнее в этот раз выглядеть так:

SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee

Результат этого запроса будет таким:

MIN(salary) AVG(salary) MAX(salary)
1000 76833.3333 200000

Минимальная зарплата в нашем отделе 1000 долларов – очень хорошо. Максимальная зарплата – 200 тысяч, но это директор.

А вот средняя зарплата слишком высокая, нужно как-то оптимизировать затраты. Наймем еще одного кота и дело с концом :)

1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Стоимость всех машин
Стоимость всех машин
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Стоимость некоторых машин
Стоимость некоторых машин
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Минимальная и максимальная стоимость
Минимальная и максимальная стоимость
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Минимальная и ограниченная максимальная стоимость
Минимальная и ограниченная максимальная стоимость
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Сумма и среднее
Сумма и среднее
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Сумма и среднее
Сумма и среднее
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Сотрудники по позициям
Сотрудники по позициям
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Девелепоры по позициям
Девелепоры по позициям
1
Задача
Модуль 4. Работа с БД,  2 уровень5 лекция
Недоступна
Рейтинг имеет значение
Рейтинг имеет значение
Комментарии (18)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Виктор
Уровень 115
8 февраля, 11:27
Я щелкнул за него
Алексей
Уровень 115
16 декабря 2025, 20:50
Щелкун, ВСЁ отщелкался???
Anonymous #izrb#
Уровень 1
3 января 2025, 17:07
А куда пропал щелкун?
Константин
Уровень 81
11 января 2025, 13:28
Щелкун дуреет с этой прикормки.
28 апреля 2025, 04:45
не щелкнул
Дмитрий
Уровень 115
Expert
16 марта, 12:08
у него щелкалка сломалась
Ольга
Уровень 72
Expert
24 мая 2024, 06:53
По последней задаче task0260 - где в условии написанно, что надо склеить значения name? В правильном ответе испоользуется group_concat. Добавьте хотя бы в условия это, а то как угадать формат вывода?
Иван
Уровень 92
Expert
19 сентября 2023, 22:06
Другой вопрос , зачем коту вообще платить ?
Вячеслав
Уровень 75
Expert
26 октября 2023, 10:20
чем-то еще, кроме еды)
Stroka
Уровень 1
30 ноября 2023, 06:03
1000 долларов лучше мне дайте я буду котом и еще на java писать буду
Anonymous #311541 Java Developer
14 декабря 2023, 16:22
чтобы потом забрать его зарплату себе)))
Андрей
Уровень 109
17 ноября 2024, 15:38
С бесплатным котом, средняя зарплата понизится до 65857$ - не на много. Коту бы подругу, со временем и наступит оптимизация затрат.
Madina Baizhanova
Уровень 29
23 августа 2023, 12:26
Ruslan Shamsiev
Уровень 1
10 января 2023, 21:39
6-9 врятли можно назвать популярными, скорее они в той стопке что через 5 лет
Евгений
Уровень 22
29 ноября 2023, 23:23
9 очень полезная, в MS SQL приходится вместо неё использовать select ... for xml path('').
Igor
Уровень 2
Expert
4 ноября 2022, 14:48
Надо набрать одних котов 😂
Владимир
Уровень 109
Expert
29 ноября 2022, 21:14
Мяу, йопта🤣
DanielCEO в BicycleInventionAcad
29 июня 2023, 18:15
А потом во время дедлайна можно честно говорить, что у вас лапки🙃