Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

Агрегатные функции ANSI SQL

Агрегатные функции возвращают одиночное значение на основе набора других значений. Если эта функция используется в числе прочих выражений в списке элементов инструкции SELECT, то инструкция SELECT должна содержать предложение GROUP BY или HAVING. Предложения GROUP BY или HAVING можно не указывать, если значение агрегатной функции является единственным значением, возвращаемым инструкцией SELECT. Поддерживаемые агрегатные функции и их синтаксис перечислены в 4.1.

С технической точки зрения операторы ANY, EVERY и SOME являются агрегатными функциями. Однако они считаются критериями поиска по диапазону, поскольку чаще всего их используют именно таким образом. За дополнительной информацией об этих функциях обращайтесь к разделу «Операторы ALL/ANY/SOME» главы 3.

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

имя_агрегатной_функции ([ALL DISTINCT] выражение)

Именем агрегатной функции может быть AVG, COUNT, MAX, MIN или SUM, как показано в 4.1. Ключевое слово ALL (соответствующее поведению по умолчанию) применяется для указания того, что при создании агрегатного результата функции используются все строки. Ключевое слово DISTINCT показывает, что используются только недублирующиеся значения.

Все агрегатные функции, кроме COUNT(*), при вычислении результата игнорируют пустые значения (NULL).

AVG и SUM

Функция AVG вычисляет среднее значение для столбца или выражения. Функция SUM вычисляет сумму. Обе функции работают с числовыми значениями и игнорируют значения NULL. Ключевое слово DISTINCT используется для вычисления среднего или суммы для всех неповторяющихся значений в столбце или выражении.


Стандартный синтаксис SQL

AVG ([ALL | DISTINCT] выражение) SUM ([ALL | DISTINCT] выражение)




MySQL, PostgreSQL и SQL Server

Все эти платформы поддерживают для этих функций синтаксис SQL 2003. DB2 и Oracle

DB2 и Oracle поддерживают синтаксис ANSI, а также следующий синтаксис для аналитических целей.

AVG ([ALL | DISTINCT] выражение) OVER (оконное_предложение) SUM ([ALL | DISTINCT] выражение) OVER (оконное_предложение)

За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.

Пример:

Следующий запрос вычисляет средний объем продаж с начала года для каждого типа книг.

SELECT
type,
AVG(ytd_sales) AS average_ytd_sales
FROM titles
GROUP BY type;

Следующий запрос возвращает суммарный объем продаж с начала года для каждого типа книг.

SELECT
type,
SUM(ytd_sales)
FROM titles
GROUP BY type;


CORR

Функция CORR возвращает коэффициент корреляции между наборами зависимых и независимых переменных.



Синтаксис SQL 2003

Функция вызывается с двумя переменными: одной — зависимой, а другой — независимой.

CORR (зависимая, независимая)

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



Oracle

Платформа Oracle поддерживает синтаксис SQL 2003 и следующий аналитический синтаксис.

CORR (зависимая, независимая) OVER (оконное_предложение)

За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.


DB2, MySQL, PostgreSQL и SQL Server

Эти платформы ни в какой форме не поддерживают эту функцию.


COUNT

Функция COUNT используется для вычисления количества строк в выражении. Синтаксис SQL 2003

COUNT(-) = COUNT ([ALL | DISTINCT] выражение) COUNT(*)

Подсчитываются все строки в целевой таблице независимо от того, есть в них пустые значения (NULL) или нет.

COUNT ([ALL | DISTINCT] выражение)

Вычисляется количество строк с непустыми значениями в указанном столбце или выражении. При использовании ключевого слова DISTINCT игнорируются дублирующиеся строки и выводится только количество недублирующихся значений. При использовании ключевого слова ALL возвращается количество непустых значений в выражении. Это поведение используется, если не указано слово DISTINCT.




MySQL, PostgreSQL и SQL Server

Все эти платформы поддерживают для функции COUNT синтаксис SQL 2003.


DB2 и Oracle

Поддерживают стандартный синтаксис ANSI, а также следующий аналитический синтаксис.

COUNT ({*] [DIS’INCT] выражение;) OVER (оконное.предложение)

За объяснениями параметра oKOinioe_nped:imiceiiue обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.

Пример

Этот запрос подсчитывает количество строк в таблице.

SELECT
COUNT(*)
FROM publishers;

Следующий запрос определяет количество стран, в которых находятся издатели.

SELECT
COUNT(DISTINCT country) Count of Countries
FROM publishers;


COVAR_POP

Функция COVARPOP возвращает значение ковариации генеральной совокупности для набора зависимых и независимых значений.



Синтаксис SQL 2003

Переменная вызывается с указанием двух переменных: одной — зависимой и одной независимой.

COVAR_POP (зависимая, независимая)

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



Oracle

Платформа Oracle поддерживает синтаксис SQL 2003 и, кроме того, реализует следующий аналитический синтаксис.

COVAR_POP (зависимая, независимая) OVER (оконное_предложение)

За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.


DB2

В DB2 данная функция называется CORRELATION.




MySQL, PostgreSQL и SQL Server

Эти платформы не поддерживают ни одну из форм функции COVARPOP.

Пример:

В следующем примере использования функции COVAR_POP используются данные, выводимые первой инструкцией SELECT.

Источник