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

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

Модуль 4. Работа с БД
2 уровень , 5 лекция
Открыта

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 февраля 2026
Я щелкнул за него
Алексей Уровень 115
16 декабря 2025
Щелкун, ВСЁ отщелкался???
Anonymous #izrb# Уровень 1
3 января 2025
А куда пропал щелкун?
Константин Уровень 81
11 января 2025
Щелкун дуреет с этой прикормки.
28 апреля 2025
не щелкнул
Дмитрий Уровень 115 Expert
16 марта 2026
у него щелкалка сломалась
Ольга Уровень 72 Expert
24 мая 2024
По последней задаче task0260 - где в условии написанно, что надо склеить значения name? В правильном ответе испоользуется group_concat. Добавьте хотя бы в условия это, а то как угадать формат вывода?
Иван Уровень 92 Expert
19 сентября 2023
Другой вопрос , зачем коту вообще платить ?
Вячеслав Уровень 75 Expert
26 октября 2023
чем-то еще, кроме еды)
Stroka Уровень 1
30 ноября 2023
1000 долларов лучше мне дайте я буду котом и еще на java писать буду
Anonymous #311541 Уровень 32
14 декабря 2023
чтобы потом забрать его зарплату себе)))
Андрей Уровень 109
17 ноября 2024
С бесплатным котом, средняя зарплата понизится до 65857$ - не на много. Коту бы подругу, со временем и наступит оптимизация затрат.
Madina Baizhanova Уровень 29
23 августа 2023
Ruslan Shamsiev Уровень 1
10 января 2023
6-9 врятли можно назвать популярными, скорее они в той стопке что через 5 лет
Евгений Уровень 22
29 ноября 2023
9 очень полезная, в MS SQL приходится вместо неё использовать select ... for xml path('').
Igor Уровень 108 Expert
4 ноября 2022
Надо набрать одних котов 😂
Владимир Уровень 109 Expert
29 ноября 2022
Мяу, йопта🤣
Daniel Уровень 51
29 июня 2023
А потом во время дедлайна можно честно говорить, что у вас лапки🙃