SQL
Теория: Агрегатные функции
Язык SQL — не просто язык запросов, а мощный инструмент, похожий на язык программирования, хотя и очень специфичный. Как и в других языках, здесь есть функции, незаменимые в конкретных задачах: найти сумму или среднее по столбцу, минимум или максимум. Такие функции называются агрегатными.
Чтобы вызвать агрегатную функцию, нужно написать ее имя и затем в круглых скобках передать аргументы — переменные, над которыми будут совершаться действия. В этом уроке мы поближе познакомимся с агрегатными функциями и их аргументами.
Функция COUNT
Ранее в курсе мы научились выбирать все записи из таблицы. Например, мы можем выбрать все записи из таблицы пользователей с помощью такого запроса:
Запрос вернет нам много строк, но точное их количество мы не знаем. Чтобы это выяснить, можно использовать функцию COUNT — она возвращает количество записей в выборке.
Ответить на вопрос «А сколько записей содержится в таблице users?» можно с помощью такого запроса:
Этот запрос выведет нам ровно одно число — количество строк в запросе. Это равносильно количеству пользователей в нашей базе, потому что в этой таблице хранится информация об уникальных пользователях.
В качестве аргумента мы передали символ *, который заменяет все поля таблицы.
Еще в качестве аргумента мы можем передать имя поля. В этом случае функция вернет нам количество строк, в которых поле НЕ равно NULL. Выполним такой запрос:
Этот запрос также вернул значение 99 — это количество строк, id которых не равен NULL.
Подадим в качестве аргумента поле email_confirmed:
Этот запрос вернул 0, потому что в таблице поле email_confirmed не содержит никаких данных.
Обратите внимание, что COUNT возвращает количество записей в запросе, а не в таблице:
Этот запрос вернет количество девушек среди всех пользователей.
Функция SUM
Функция SUM возвращает сумму всех значений:
В этом запросе мы нашли суммарное время, проведенное всеми пользователями на онлайн-курсах.
В качестве аргумента в функцию SUM нужно передать числовое поле. Если передать поле, в котором хранятся строки или даты, то запрос вернет ошибку.
Также, не получится передать в функцию символ *, как мы это делали с функцией COUNT:
Функция AVG
Чтобы найти среднее арифметическое всех значений, нужно воспользоваться функцией AVG (average — среднее).
В таблице ниже вы увидите, как это происходит:
Работает функция так же как и SUM. В качестве аргумента нужно передать числовое поле.
Найдем среднее время, проведенное пользователем с id = 9 на площадке онлайн-школы:
Функции MAX и MIN
Функции MAX и MIN позволяют найти максимальное и минимальное значение соответственно. Найдем максимальное время прохождения курса:
А теперь найдем минимальное время:
В качестве аргументов в функции MAX и MIN можно передавать поля числовых типов, а так же даты и строки. Для строк минимальное и максимальное значения — это первая и последняя строки, упорядоченные по алфавиту:
Запрос с функцией MIN выведет пользователя Abelardo58, потому что он идет первым по алфавиту.
Рассмотрим еще один пример:
Запрос с функцией MAX выведет пользователя Zoey24, потому что он идет по алфавиту последним.
Выводы
В этом уроке мы познакомились с агрегатными функциями:
COUNT- позволяет подсчитать количество строкSUM- позволяет найти сумму чиселAVG- позволяет подсчитать среднее арифметическоеMAX- возвращает максимальное значение численного поля или последнюю строку по алфавитуMIN- возвращает минимальное значение численного поля или первую строку по алфавиту
Мы рассмотрели только основные функции языка SQL, а с полным списком вы можете ознакомиться в документации.
.png)






















