Skip to content

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

Пересказ статьи Hugo Kornelis. Aggregate Functions


Введение


В настоящее время SQL Server поддерживает три оператора, которые могут вычислять агрегаты: Hash Match, Stream Aggregate и Window Aggregate. Все эти операторы используют один и тот же базовый принцип поддержки внутренних счетчиков по мере обработки строк, так что финальное значение этих внутренних счетчиков и является ожидаемым значением.

Поддерживаемые агрегатные функции


Список агрегатных функций, которые поддерживаются операторами агрегации, не прямо совпадает со списком агрегатных функций, поддерживаемых в T-SQL. Некоторые агрегатные функции, которые допускаются в запросе, в плане выполнения вычисляются не непосредственно, а в обход. Например, если запрос использует функцию AVG, план выполнения вычисляет два значения, COUNT и SUM, а затем использует оператор Compute Scalar для вычисления требуемого среднего путем деления этих двух значений (зачастую привлекая специальную логику для учета пустых наборов).

С другой стороны, также имеются агрегатные функции, которые используются в агрегатных операторах, но не допускаются в T-SQL, например, ANY.

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





Что-то пропустил?


Не существует официальной документации (насколько я знаю) о поддерживаемых агрегатных функциях. Вышеприведенный список я составил на основе того, что я наблюдал в изучаемых планах выполнения. Возможно, этот список не полон. Вы можете его дополнить.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.