Агрегатные функции работают со столбцом или выражением столбца таблицы или группы (созданной с помощью условия GROUP BY).
В примерах ниже используется простая таблица t(i int, c varchar(8)) с содержимым: INSERT into t(i,c) VALUES (1, 'one'), (2, 'two'), (3, 'tree'), (4, 'four'), (NULL, NULL); для создания показанных результатов.
Функция | Возвращаемый тип данных | Описание | Пример | Результат |
---|---|---|---|---|
avg(numeric_expr) | double | Вычисляет среднее арифметическое для всех входных значений не равных NULL | avg(i) | 2.5 |
count(*) | bigint | Вычисляет количество строк в столбце или группе, включая те, которые могут иметь значения равные NULL | count(*) | 5 |
count(col_expr) | bigint | Считает количество всех значений не равных NULL в столбце или группе | count(i) | 4 |
count(distinct col_expr) | bigint | Считает количество отдельных значений не равных NULL в столбце или группе | count(distinct i%2) | 2 |
max(col_expr) | Тип аргумента col_expr | Возвращает максимальное значение не равное NULL в столбце или группе | max(c) | two |
min(col_expr) | Тип аргумента col_expr | Возвращает минимальное значение не равное NULL в столбце или группе | min(c) | four |
prod(numeric_expr) | bigint, hugeint или double | Вычисляет произведение числовых значений не равных NULL в столбце или группе | prod(i) | 24 |
prod(distinct numeric_expr) | bigint, hugeint или double | Вычисляет произведение отдельных числовых значений не равных NULL в столбце или группе | prod(distinct 1 + i%2) | 2 |
sum(integer_expr) | bigint или hugeint | Вычисляет сумму всех целочисленных значений не равных NULL в столбце или группе | sum(i) | 10 |
sum(distinct integer_expr) | bigint или hugeint | Вычисляет сумму отдельных целочисленных значений не равных NULL в столбце или группе | sum(distinct i/2) | 3 |
sum(decimal_expr) | decimal | Вычисляет сумму всех десятичных значений не равных NULL в столбце или группе | sum(cast(i as decimal)) | 10.000 |
sum(float_expr) | real или double | Вычисляет сумму всех значений с плавающей точкой не равных NULL в столбце или группе | sum(cast(i as real)) | 10.0 |
sum(month_interval_expr) | month_interval | Вычисляет сумму всех значений month_interval не равных NULL в столбце или группе | sum(cast(i as interval month)) | 10 |
sum(sec_interval_expr) | sec_interval | Вычисляет сумму всех значений month_interval не равных NULL в столбце или группе | sum(cast(i as interval second)) | 10.000 |
Функция | Возвращаемый тип данных | Описание | Пример | Результат |
---|---|---|---|---|
listagg(col_expr) | varchar | Объединяет значения не равные NULL в столбце или группе в одну большую строку varchar со значениями, разделенными запятой (разделитель по умолчанию) | listagg(c) | one,two,tree,four |
listagg(col_expr, separator_str) | varchar | Объединяет значения не равные NULL в столбце или группе в одну большую строку varchar со значениями, разделенными символом из аргумента separator_str | listagg(i, ' | ') | 1 | 2 | 3 | 4 |
group_concat(col_expr) | clob | Объединяет значения не равные NULL в столбце или группе в одну большую строку со значениями, разделенными запятой (разделитель по умолчанию) | group_concat(c) | one,two,tree,four |
group_concat(col_expr, separator_str) | clob | Объединяет значения не равные NULL в столбце или группе в одну большую строку со значениями, разделенными символом из аргумента separator_str | group_concat(i, ' | ') | 1 | 2 | 3 | 4 |
tojsonarray(clob) | clob | Преобразует строковые значения в столбце или группе в строку массива json | json.tojsonarray(c) | [ "one", "two", "tree", "four" ] |
tojsonarray(double) | clob | Преобразует числовые значения в столбце или группе в строку массива json | json.tojsonarray(i) | [ "1", "2", "3", "4" ] |
Статистическая функция | Возвращаемый тип данных | Описание | Примеры | Результат |
---|---|---|---|---|
corr(numeric_a, numeric_b) | double | Возвращает коэффициент корреляции значений не равных NULL в числовом (integer/decimal/real/double) столбце или группе numeric_a по отношению к numeric_b | corr(i, i+2) | 0.7500000000000001 |
covar_pop(numeric_a, numeric_b) | double | Возвращает ковариацию совокупности значений numeric_expr не равных NULL в числовом (integer/decimal/real/double/interval) столбце или группе numeric_a по отношению к numeric_b | covar_pop(i, i*2) | 2.5 |
covar_samp(numeric_a, numeric_b) | double | Возвращает ковариацию выборки значений numeric_expr не равных NULL в числовом (integer/decimal/real/double/interval) столбце или группе numeric_a по отношению к numeric_b | covar_samp(i, i*2) | 3.3333333333333335 |
median(col_expr) | Тип col_expr | Возвращает статистическую медиану значений не равных NULL в числовом (integer/decimal/real/double) или временном (date/time/timestamp/interval) столбце или группе | median(i) | 2 |
median_avg(numeric_expr) | double | Возвращает среднее статистическое медианное значение для значений не равных NULL в числовом (integer/decimal/real/double) столбце или группе | median_avg(i) | 2.5 |
quantile(col_expr, percentile) | Тип col_expr | Возвращает статистический квантиль значений не равных NULL в числовом (integer/decimal/real/double) или временном (date/time/timestamp/interval) столбце или группе. Аргумент percentile должен находиться в диапазоне от 0,0 до 1,0 | quantile(i, 0.7) | 3 |
quantile_avg(numeric_expr, percentile) | double | Возвращает среднее значение статистического квантиля для значений не равных NULL в числовом (integer/decimal/real/double) столбце или группе. Аргумент percentile должен находиться в диапазоне от 0,0 до 1,0 | quantile_avg(i, 0.6) | 2.8 |
stddev_pop(numeric_expr) | double | Возвращает среднеквадратичное отклонение для генеральной совокупности numeric_expr для значений не равных NULL в числовом (integer/decimal/real/double/interval) столбце или группе. Аналогично квадратному корню из var_pop(). | stddev_pop(i) | 1.118033988749895 |
stddev_samp(numeric_expr) | double | Возвращает выборочное стандартное отклонение numeric_expr для значений не равных NULL в числовом (integer/decimal/real/double/interval) столбце или группе. Аналогично квадратному корню из var_samp(). | stddev_samp(i) | 1.2909944487358056 |
var_pop(numeric_expr) | double | Возвращает дисперсию для генеральной совокупности numeric_expr для значений не равных NULL в числовом (integer/decimal/real/double/interval) столбце или группе. Аналогично квадрату функции stddev_pop(). | var_pop(i) | 1.25 |
var_samp(numeric_expr) | double | Возвращает выборочную стандартную дисперсию numeric_expr для значений не равных NULL в числовом (integer/decimal/real/double/interval) столбце или группе. Аналогично квадрату функции stddev_samp(). | var_samp(i) | 1.6666666666666667 |