Функции Transact-SQL могут быть агрегатными или скалярными.
Агрегатные функции
Агрегатные функции применяются к группе значений столбца. Агрегатные функции всегда возвращают одно значение. Transact-SQL поддерживает несколько групп агрегатных функций:
♦ обычные агрегатные функции;
♦ статистические агрегатные функции;
♦ агрегатные функции, определенные пользователем;
♦ аналитические агрегатные функции.
Статистические и аналитические агрегатные функции обсуждаются. Агрегатные функции, определенные пользователем, выходят за рамки этой книги. У нас остаются только обычные агрегатные функции:
♦ avg. Вычисляет среднее арифметическое значение данных, содержащихся в столбце. Столбец должен содержать числовые значения;
♦ мах и min. Вычисляют максимальное и минимальное значения данных в столбце, соответственно. Столбец может содержать числовые, строковые значения, а также значения даты/времени;
♦ sum. Рассчитывает сумму всех значений столбца. Столбец должен иметь числовые значения;
♦ count. Подсчитывает количество (непустых) значений столбца. Есть только одна агрегатная функция, применяемая ко всем столбцам,- coutn(*). Эта функция возвращает количество строк таблицы (независимо от того, имеют ли отдельные столбцы значение null);
♦ count_big. Аналогична функции count с той лишь разницей, что count_big возвращает значение типа данных bigint.
Использование обычных агрегатных функций в операторе select подробно описывается.
Скалярные функции
В дополнение к агрегатным функциям Transact-SQL предоставляет несколько скалярных функций, которые используются в составе скалярных выражений. (Скалярные функции оперируют одним значением или списком значений в отличие от агрегатных функций, которые оперируют данными из множества строк.) Скалярные функции могут быть объединены в категории следующим образом:
♦ числовые функции;
♦ функции даты;
♦ строковые функции;
♦ системные функции;
♦ функции над метаданными.
Числовые функции
Числовые функции в Transact-SQL являются математическими функциями для изменения числовых значений (табл. 4.5).