Агрегатные функции в SQL: объяснение с примерами запросов

Перевод статьи «SQL Aggregate Functions – With Example Data Queries for Beginners».

Photo by Ben Harritt on Unsplash

Если вы когда-либо работали с таблицами Excel или Google Sheets, агрегатные функции SQL покажутся вам знакомыми. Например, вам случалось использовать SUM при работе с таблицами? Функция SUM есть и в SQL. Она как раз относится к агрегатным функциям.

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

Допустим, вы каждый год запускаете сбор денег на какие-то нужды. У вас есть база жертвователей, где хранятся их имена, адреса электронной почты и перечисленные суммы (по годам).

При помощи функции COUNT вы можете определить, сколько всего пожертвований было сделано. А при помощи SUM можно вычислить общую сумму денег, которую удалось собрать в этом году.

В этой статье мы рассмотрим следующие агрегатные функции: COUNT, SUM, MIN/MAX и AVG. А для иллюстрации будем использовать небольшой набор данных:

NAMEEMAILDONATION_2020DONATION_2021
Andrew Jonesajones@someemail.com400500
Maria Rodriguezmaria77@someemail.com1000350
Gerry FordNULL2525
Isabella Munnisamun91@someemail.com250NULL
Jennifer Wardjjw1972@someemail.com20002300
Rowan ParkerNULL50004000
Таблица donors

Функция 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]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх