Перевод статьи «SQL Aggregate Functions – With Example Data Queries for Beginners».
Если вы когда-либо работали с таблицами Excel или Google Sheets, агрегатные функции SQL покажутся вам знакомыми. Например, вам случалось использовать SUM
при работе с таблицами? Функция SUM
есть и в SQL. Она как раз относится к агрегатным функциям.
Агрегатные функции выполняют конкретные действия со строками таблиц.
Допустим, вы каждый год запускаете сбор денег на какие-то нужды. У вас есть база жертвователей, где хранятся их имена, адреса электронной почты и перечисленные суммы (по годам).
При помощи функции COUNT
вы можете определить, сколько всего пожертвований было сделано. А при помощи SUM
можно вычислить общую сумму денег, которую удалось собрать в этом году.
В этой статье мы рассмотрим следующие агрегатные функции: COUNT, SUM, MIN/MAX и AVG. А для иллюстрации будем использовать небольшой набор данных:
NAME | DONATION_2020 | DONATION_2021 | |
---|---|---|---|
Andrew Jones | ajones@someemail.com | 400 | 500 |
Maria Rodriguez | maria77@someemail.com | 1000 | 350 |
Gerry Ford | NULL | 25 | 25 |
Isabella Munn | isamun91@someemail.com | 250 | NULL |
Jennifer Ward | jjw1972@someemail.com | 2000 | 2300 |
Rowan Parker | NULL | 5000 | 4000 |
Функция COUNT
Функция COUNT
возвращает количество строк. В самой простой форме COUNT
подсчитывает общее количество строк в вашей таблице.
Чтобы получить это значение для нашей таблицы с пожертвованиями, нужно запустить запрос SELECT COUNT(*) FROM donors
.
Вернется общее число жертвователей, в нашем случае это 6. Мы, конечно, и так видим, что их 6, но представьте, что таблица у нас очень большая.
Возможно, вам нужно сосчитать только какие-то определенные строки. Например, вывести число жертвователей, у которых указан адрес электронной почты.
Запустив запрос SELECT COUNT(email) FROM donors
, вы получите 4 — общее число жертвователей с ненулевым значением в столбце email
.
Имейте в виду, что если вы не используете псевдонимы, возвращаемый столбец будет обозначен просто как count. Если вам нужно более описательное имя, запустите запрос с созданием псевдонима при помощи AS
. Например, SELECT COUNT(email) FROM donors AS email_count
.
Функция SUM
SUM
— очень полезная агрегатная функция, с помощью которой можно складывать числовые значения в различных строках.
В нашей базе можно использовать SUM
, чтобы высчитать сумму денег, полученных в 2021 году. Для этого нужно запустить запрос SELECT SUM(donation_2021) FROM donors
. Обратите внимание, что функция SUM
игнорирует значения NULL
.
Помните, что SUM
, как и другие агрегатные функции, работает по строкам, а не по столбцам.
Поэтому в нашем примере при помощи функции SUM
можно сложить все донаты всех жертвователей за определенный год, но не суммы, перечисленные каждым отдельным человеком за два года.
Функции MIN и MAX
Как вы наверняка догадываетесь, MIN
и MAX
используются для поиска минимального и максимального значений в определенном столбце базы данных.
Вернемся к нашему примеру. Допустим, нам нужно найти, каким было самое маленькое и самое большое пожертвование в 2021 году. Для этого мы можем запустить следующий запрос:
SELECT MIN(donation_2021) AS "Minimum donation 2021", MAX(donation_2021) AS "Maximum donation 2021" FROM donors
Обратите внимание, что здесь для возвращаемых столбцов мы добавили псевдонимы, при этом взяли их в кавычки. Если в вашем псевдониме нет пробелов, кавычки не обязательны, но у нас пробелы есть.
Любопытный факт: функции MIN
и MAX
можно использовать и для нечисловых значений.
MIN
ищет самое маленькое число, букву, которая в алфавите стоит ближе всего к A, или самую раннюю дату. Функция MAX
ищет самое большое число, букву, стоящую ближе всего к Z, или самую последнюю дату. Это очень полезная особенность!
Функция AVG
Наконец, функция AVG
вычисляет среднее значение в указанном столбце. Как и SUM
, эта функция игнорирует NULL
.
Чтобы получить средний размер пожертвований в 2020 году, можно запустить следующий запрос:
SELECT AVG(donation_2020) FROM donors
Итоги
Как видите, агрегатные функции — это простые и полезные инструменты для анализа данных в SQL. Умение пользоваться AVG
, MIN
/MAX
, SUM
и COUNT
— важное дополнение к вашему набору SQL-навыков.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]