РМД/Функции агрегации

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Функции агрегации (агрегирующие функции, функции-агрегаты, агрегаты, собирательные функции) в РМД — вид «собирательных» (присоединительных) функций, что работают с множеством опред. столбцов подходящих по условию строк, и на основе полученных данных, в зависимости от вида операции, возвращают 1 знач.

Все функции агрегации возвращают 1 знач. несмотря на то, что работают со множеством рядов, это их отличительная особенность: работа со множеством ячеек, и при этом возвращение только 1 агрегированного результата.

В качестве аргументов функциям агрегации передаются названия столбцов, для которых будут производиться вычисления.

В большинстве популярных СУБД поддерж. стандарт. набор функций агрегации.

Операции

Функции агрегации выполняют всевозможн. операции для заданных столбцов. Обычно это след. операции:

  • подсчёт всех знач.
  • вычисление среднего арифметического знач.
  • вычисление мин. знач.
  • вычисление макс. знач.
  • вычисление разброса знач.
  • конкатенация знач. всех строк, и т.д.

Базовый набор

Несмотря на то, что набор поддерж. функций определяется кажд. конкретн. СУБД, все перечисл. ниже функции агрегации (агрегаты) поддерж. в большинстве распростр. СУБД:

  • AVG — средн. арифметич. знач.
  • COUNT — общее кол-во знач.
  • GROUP_CONCAT — конкатенац. знач.
  • MIN — мин. знач.
  • MAX — макс. знач.
  • STD
  • SUM — сумма всех знач.
  • VARIANCE — дисперсия знач.

Примеры

Подсчёт всех строк табл.

SELECT COUNT(col) FROM tbl

С помощью функции-агрегата COUNT подсчитывается кол-во строк со столбцом col. Поскольку работа ведётся именно с реляционной БД, то у каждой строки табл. есть этот столбец. Поэтому более распространён след. вариант такого запроса:

SELECT COUNT(*) FROM tbl

Т.е., выбираются сразу все столбцы.

Если требуется посчитать только строки, имеющие уник. знач. столбца, то следует использовать ключ. слово DISTINCT:

SELECT COUNT(DISTINCT col) FROM tbl

Подсчёт мин. знач. столбца табл.

SELECT MIN(col) FROM tbl

Вернётся 1 мин. знач. столбца col табл. tbl.