Лекция
Привет, Вы узнаете о том , что такое агрегатные функции, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое агрегатные функции, mysql group by, агрегация, группировка записей , настоятельно рекомендую прочитать все из категории MySql (Maria DB).
агрегация - это такая абстракция, которая превращает связь между объектами в некоторый агрегированный объект.
Агрегатная функция выполняет вычисление нескольких значений и возвращает одно значени то есть это функции вычисляющие результат по набору значений группы, либо всех записей БД
Например, вы можете использовать AVG()
агрегатную функцию, которая принимает несколько чисел и возвращает среднее значение чисел.
Ниже показан синтаксис агрегатной функции:
function_name(DISTINCT | ALL expression)
Язык кода: SQL (язык структурированных запросов) ( sql )
В этом синтаксисе:
AVG()
. См. Список агрегатных функций в следующем разделе.DISTINCT
если вы хотите вычислить на основе различных значений или ALL
если вы хотите вычислить все значения, включая дубликаты. По умолчанию это ALL
.
агрегатные функции часто используются с GROUP BY
предложением для вычисления агрегированного значения для каждой группы, например, среднего значения по группе или суммы значений в каждой группе.
группировка записей это конструкция GROUP BY в команде выборки позволяет разделить записи БД слоя на группы. Группировка записей может выполняться по значениям одного или нескольких полей записей, либо на основании значений столбцов таблицы результатов выборки.
Формат конструкции: GROUP BY <поля данных>|<номера столбцов>
. При задании названии полей данных группировка выполняется по полям данных таблицы, если же номера столбцов - то по номерам столбцов выводимой таблицы (нумерация столбцов начинается с 1).
В команде выборки конструкция GROUP BY размещается непосредственно после конструкции WHERE, перед HAVING и ORDER.
Группировка записей всегда используется совместно с агрегирующими функциями. В таком случае агрегирующие функции применяются отдельно к каждой группе записей. Например, при группировке записей слоя Здания
по полю Улица
, все записи БД слоя будут разбиты на несколько групп, в каждой группе записи с одинаковой улицей. И, при применении функции COUNT в таком запросе, будет выведено количество записей в каждой группе.
Группировка одновременно может выполняться по нескольким полям (столбцам). Поля (столбцы) группировки перечисляются через запятую, после слов GROUP BY. Группировка сначала выполняется по первому полю, затем, уже сгруппированные записи разбиваются на подгруппы по второму полю и т.д.
При использовании в запросе группировки, среди выводимых столбцов выборки могут задаваться агрегирующие функции, и поля записей по которым выполняется группировка, либо выражения включающие эти поля.
На следующем рисунке показано, что SUM()
агрегатная функция используется вместе с GROUP BY
предложением:
MySQL поддерживает следующие агрегатные функции:
Агрегатная функция | Описание |
---|---|
AVG() | Возвращает среднее значение, отличное от NULL. |
BIT_AND() | Вернуть побитовое И. |
BIT_OR ) | Вернуть побитовое ИЛИ. |
BIT_XOR () | Вернуть побитовое XOR. |
COUNT() | Возвращает количество строк в группе, включая строки со значениями NULL. |
GROUP_CONCAT() | Вернуть составную строку. |
JSON_ARRAYAGG() | Вернуть набор результатов в виде единого массива JSON. |
JSON_OBJECTAGG() | Вернуть набор результатов как один объект JSON. |
MAX() | Возвращает наивысшее значение (максимум) из набора значений, отличных от NULL. |
MIN() | Возвращает наименьшее значение (минимум) из набора значений, отличных от NULL. |
STDEV() | Возвратите стандартное отклонение генеральной совокупности. |
STDDEV_POP() | Возвратите стандартное отклонение генеральной совокупности. |
STDDEV_SAMP() | Верните стандартное отклонение выборки. |
SUM() | Возвращает сумму всех ненулевых значений набора. |
VAR_POP() | Верните стандартную дисперсию генеральной совокупности. |
VARP_SAM() | Верните образец дисперсии. |
VARIANCE() | Верните стандартную дисперсию генеральной совокупности. |
Мы будем использовать products
и orderdetails
таблицы из образца базы данных для демонстрации:
AVG()
примеры функцийAVG()
Функция вычисляет среднее значение из набора значений. Об этом говорит сайт https://intellect.icu . Он игнорирует NULL в вычислениях.
AVG(expression)
Язык кода: SQL (язык структурированных запросов) ( sql )
Например, вы можете использовать эту AVG
функцию для расчета средней цены покупки всех продуктов в products
таблице, используя следующий запрос:
SELECT AVG(buyPrice) average_buy_price FROM products;
Язык кода: SQL (язык структурированных запросов) ( sql )
В следующем примере AVG()
функция используется для расчета средней цены покупки для каждой линейки продуктов:
SELECT productLine, AVG(buyPrice) FROM products GROUP BY productLine ORDER BY productLine;
Язык кода: SQL (язык структурированных запросов) ( sql )
COUNT()
примеры функцийCOUNT()
Функция возвращает номер значения в наборе.
Например, вы можете использовать эту COUNT()
функцию, чтобы получить количество продуктов в products
таблице, как показано в следующем запросе:
SELECT COUNT(*) AS total FROM products;
Язык кода: PHP ( php )
Следующий оператор использует COUNT()
функцию с GROUP BY
предложением, чтобы получить количество продуктов для каждой линейки продуктов:
SELECT productLine, COUNT(*) FROM products GROUP BY productLine ORDER BY productLine;
Язык кода: SQL (язык структурированных запросов) ( sql )
SUM()
примеры функцийSUM()
Функция возвращает сумму значений в наборе. SUM()
Функция игнорирует NULL
. Если подходящей строки не найдено, SUM()
функция возвращает NULL.
Чтобы получить общую стоимость заказа каждого продукта, вы можете использовать SUM()
функцию вместе с GROUP BY
предложением следующим образом:
SELECT productCode, SUM(priceEach * quantityOrdered) total FROM orderDetails GROUP BY productCode ORDER BY total DESC;
Язык кода: SQL (язык структурированных запросов) ( sql )
Для того, чтобы увидеть результат более подробно, вы можете присоединиться к orderdetails
таблице в products
таблицу , как показано в следующем запросе:
SELECT productCode, productName, SUM(priceEach * quantityOrdered) total FROM orderDetails INNER JOIN products USING (productCode) GROUP BY productCode ORDER BY total;
Язык кода: SQL (язык структурированных запросов) ( sql )
MAX()
примеры функцийMAX()
Функция возвращает максимальное значение в наборе.
MAX(expression)
Язык кода: SQL (язык структурированных запросов) ( sql )
Например, вы можете использовать эту MAX()
функцию, чтобы получить самую высокую цену покупки из products
таблицы, как показано в следующем запросе:
SELECT MAX(buyPrice) highest_price FROM products;
Язык кода: SQL (язык структурированных запросов) ( sql )
В следующем заявлении используется MAX()
функция с GROUP BY
предложением для получения максимальной цены за линейку продуктов:
SELECT productLine, MAX(buyPrice) FROM products GROUP BY productLine ORDER BY MAX(buyPrice) DESC;
Язык кода: SQL (язык структурированных запросов) ( sql )
MIN()
примеры функцийMIN()
Функция возвращает минимальное значение в наборе значений.
MIN(expression)
Язык кода: SQL (язык структурированных запросов) ( sql )
Например, следующий запрос использует MIN()
функцию, чтобы найти самую низкую цену из products
таблицы:
SELECT MIN(buyPrice) lowest_price FROM products;
Язык кода: SQL (язык структурированных запросов) ( sql )
В следующем примере MIN()
функция с GROUP BY
предложением используется для получения наименьшей цены на линейку продуктов:
SELECT productLine, MIN(buyPrice) FROM products GROUP BY productLine ORDER BY MIN(buyPrice);
Язык кода: SQL (язык структурированных запросов) ( sql )
GROUP_CONCAT()
пример функцииGROUP_CONCAT()
Присоединяет набор строк и возвращает сцепленную строку. См. Следующие employees
и customers
таблицы:
Следующий оператор использует GROUP_CONCAT()
функцию для возврата торгового персонала и списка клиентов, за которые отвечает каждый торговый персонал:
SELECT firstName, lastName, GROUP_CONCAT( DISTINCT customername ORDER BY customerName) customers FROM employees INNER JOIN customers ON customers.salesRepEmployeeNumber = employeeNumber GROUP BY employeeNumber ORDER BY firstName , lastname;
Язык кода: SQL (язык структурированных запросов) ( sql )
На этой странице мы обсудили, как использовать функцию MySQL COUNT () с GROUP BY.
Пример:
Следующая инструкция MySQL покажет количество авторов для каждой страны. Предложение GROUP BY группирует все записи для каждой страны, а затем функция COUNT () вместе с GROUP BY подсчитывает количество авторов для каждой страны.
Примерная таблица:
Код:
Пример вывода:
Иллюстрированное объяснение
Исследование, описанное в статье про агрегатные функции, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое агрегатные функции, mysql group by, агрегация, группировка записей и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории MySql (Maria DB)
Комментарии
Оставить комментарий
MySql (Maria DB)
Термины: MySql (Maria DB)