Формально агрегатная функция принимает в качестве входных данных набор , мультимножество (мешок) или список из некоторого входного домена I и выводит элемент выходного домена O . [1] Входные и выходные домены могут быть одинаковыми, например, для SUM, или могут быть разными, например, для COUNT.
Функция listagg, определенная в стандарте SQL:2016 [2],
объединяет данные из нескольких строк в одну объединенную строку.
На диаграмме отношений сущностей агрегация представлена, как показано на рисунке 1, с прямоугольником вокруг отношения и его сущностей, что указывает на то, что оно рассматривается как агрегированная сущность. [3]
Некоторые агрегатные функции можно вычислить, вычислив агрегат для подмножеств, а затем агрегировав эти агрегаты; примеры включают COUNT, MAX, MIN, и SUM. В других случаях агрегат можно вычислить, вычислив вспомогательные числа для подмножеств, агрегировав эти вспомогательные числа и, наконец, вычислив общее число в конце; примеры включают AVERAGE(отслеживание суммы и количества, деление в конце) и RANGE(отслеживание максимума и минимума, вычитание в конце). В других случаях агрегат невозможно вычислить без анализа всего набора сразу, хотя в некоторых случаях приближения могут быть распределены; примеры включают DISTINCT COUNT( задача Count-distinct ), MEDIAN, и MODE.
Такие функции называются разложимыми функциями агрегации [4] или разложимыми агрегатными функциями . Простейшие из них можно назвать саморазложимыми функциями агрегации , которые определяются как функции f , такие, что существует оператор слияния такой, что
, что означает, что слияние — это просто сложение.
COUNT:
,
.
MAX:
,
.
MIN:
, [2]
.
Обратите внимание, что саморазлагаемые функции агрегации можно объединять (формально, беря произведение), применяя их по отдельности, так что, например, можно вычислить SUMи COUNTодновременно, отслеживая два числа.
В более общем смысле можно определить разложимую функцию агрегации f как такую, которая может быть выражена как композиция конечной функции g и саморазложимой функции агрегации h , . Например, = / и = − .AVERAGESUMCOUNTRANGEMAXMIN
В фреймворке MapReduce эти шаги известны как InitialReduce (значение для индивидуального набора записей/одиночек), Combine (бинарное слияние двух агрегаций) и FinalReduce (конечная функция для вспомогательных значений) [5] , а перемещение разложимой агрегации перед фазой Shuffle известно как шаг InitialReduce [6].
Разложимые функции агрегации важны в онлайн-аналитической обработке (OLAP), поскольку они позволяют вычислять запросы агрегации на основе предварительно вычисленных результатов в кубе OLAP , а не на основе базовых данных. [7] Например, легко поддерживать COUNT, MAX, MIN, и SUMв OLAP, поскольку их можно вычислить для каждой ячейки куба OLAP, а затем суммировать («свернуть»), но трудно поддерживать MEDIAN, поскольку его необходимо вычислять для каждого представления отдельно.
Другие разложимые агрегатные функции
Для того чтобы вычислить среднее значение и стандартное отклонение по совокупным данным, необходимо иметь в наличии для каждой группы: сумму значений (Σx i = SUM(x)), количество значений (N=COUNT(x)) и сумму квадратов значений (Σx i 2 =SUM(x 2 )) каждой группы. [8]
AVG :
или
, только если COUNT(X)=COUNT(Y) : Сумма квадратов значений важна для вычисления стандартного отклонения групп :
Для конечной совокупности с равными вероятностями во всех точках имеем [9] [ циклическая ссылка ] SUM(x2) STDDEV
Это означает, что стандартное отклонение равно квадратному корню из разницы между средним значением квадратов значений и квадратом среднего значения.
^ Иисус, Бакеро и Алмейда, 2011, 2 Определение проблемы, стр. 3.
^ ab Winand, Markus (2017-05-15). "Big News in Databases: New SQL Standard, Cloud Wars, and ACIDRain (Spring 2017)". DZone. Архивировано из оригинала 2017-05-27 . Получено 2017-06-10 . В декабре 2016 года ISO выпустила новую версию стандарта SQL. Она вводит новые функции, такие как сопоставление шаблонов строк, listagg, форматирование даты и времени и поддержка JSON.
^ Elmasri, Ramez (2016). Основы систем баз данных. Sham Navathe (Седьмое изд.). Hoboken, NJ. стр. 133. ISBN978-0-13-397077-7. OCLC 913842106.{{cite book}}: CS1 maint: location missing publisher (link)
Грабиш, Мишель; Маришаль, Жан-Люк; Месиар, Радко; Пап, Эндре (2009). Функции агрегации . Энциклопедия математики и ее приложений. Том 127. Кембридж: Cambridge University Press . ISBN 978-0-521-51926-7. Збл 1196.00002.
Агрегатные функции Oracle: примеры MAX, MIN, COUNT, SUM, AVG
Ю, Юань; Гунда, Прадип Кумар; Айсард, Майкл (2009). Распределенная агрегация для параллельных вычислений данных: интерфейсы и реализации. ACM SIGOPS 22-й симпозиум по принципам операционных систем. ACM . С. 247–260. doi :10.1145/1629575.1629600.