Агрегатные функции
Пересказ статьи Hugo Kornelis. Aggregate Functions
Введение
В настоящее время SQL Server поддерживает три оператора, которые могут вычислять агрегаты: Hash Match, Stream Aggregate и Window Aggregate. Все эти операторы используют один и тот же базовый принцип поддержки внутренних счетчиков по мере обработки строк, так что финальное значение этих внутренних счетчиков и является ожидаемым значением.
Поддерживаемые агрегатные функции
Список агрегатных функций, которые поддерживаются операторами агрегации, не прямо совпадает со списком агрегатных функций, поддерживаемых в T-SQL. Некоторые агрегатные функции, которые допускаются в запросе, в плане выполнения вычисляются не непосредственно, а в обход. Например, если запрос использует функцию AVG, план выполнения вычисляет два значения, COUNT и SUM, а затем использует оператор Compute Scalar для вычисления требуемого среднего путем деления этих двух значений (зачастую привлекая специальную логику для учета пустых наборов).
С другой стороны, также имеются агрегатные функции, которые используются в агрегатных операторах, но не допускаются в T-SQL, например, ANY.
В таблице ниже перечислены все известные на текущий момент агрегатные функции с описанием и спецификой присвоения начальных значений внутренним счетчикам, и как эти счетчики обновляются по мере обработки строк.
Что-то пропустил?
Не существует официальной документации (насколько я знаю) о поддерживаемых агрегатных функциях. Вышеприведенный список я составил на основе того, что я наблюдал в изучаемых планах выполнения. Возможно, этот список не полон. Вы можете его дополнить.
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой