FirebirdSQL logo

SUM()

Доступно в

DSQL

Синтаксис
SUM([ALL | DISTINCT] <expr>)
Table 1. Параметры функции SUM
Параметр Описание

expr

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

Тип возвращаемого результата

DOUBLE PRECISION, DECFLOAT или масштабируемое целое (INTEGER, BIGINT или INT128) в зависимости от типа аргумента функции expr.Обычно, если это возможно, выбирается тип с большей вместимостью, чем тип выражения expr.

Функция SUM возвращает сумму элементов выборки, которые не равны NULL.

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

  • При пустой выборке, или при выборке из одних NULL функция возвратит NULL.

Примеры SUM

Example 1. Использование функции SUM
SELECT
  dept_no,
  SUM(salary)
FROM employee
GROUP BY dept_no
См. также:

SELECT.

docnext count = 26

Статистические функции

Статистические функции являются агрегатными функциями.Эти функции не учитывают значения NULL.К аргументу статистической функции не применимы параметры ALL и DISTINCT.

Статистические функции часто используются совместно с предложением GROUP BY.

CORR()

Доступно в

DSQL

Синтаксис
CORR(<expr1>, <expr2>)
Table 1. Параметры функции CORR
Параметр Описание

expr1, expr2

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

Тип возвращаемого результата

DOUBLE PRECISION

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

Функция CORR(<expr1>, <expr2>) эквивалентна

COVAR_POP(<expr1>, <expr2>) / (STDDEV_POP(<expr2>) * STDDEV_POP(<expr1>))

В статистическом смысле, корреляция — это степень связи между переменными.Связь между переменными означает, что значение одной переменной можно в определённой степени предсказать по значению другой.Коэффициент корреляции представляет степень корреляции в виде числа в диапазоне от -1 (высокая обратная корреляция) до 1 (высокая корреляция). Значение 0 соответствует отсутствию корреляции.

В случае если выборка записей пустая или содержит только значения NULL, результат будет содержать NULL.

Примеры CORR

Example 1. Использование функции CORR
SELECT
    CORR(alength, aheight) AS c_corr
FROM measure

COVAR_POP()

Доступно в

DSQL

Синтаксис
COVAR_POP(<expr1>, <expr2>)
Table 1. Параметры функции COVAR_POP
Параметр Описание

expr1, expr2

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

Тип возвращаемого результата

DOUBLE PRECISION

Функция COVAR_POP возвращает ковариацию совокупности (population covariance) пар выражений с числовыми значениями.

Функция COVAR_POP(<expr1>, <expr2>) эквивалентна

(SUM(<expr1> * <expr2>) - SUM(<expr1>) * SUM(<expr2>) / COUNT(*))
  / COUNT(*)

В случае если выборка записей пустая или содержит только значения NULL, результат будет содержать NULL.

Примеры COVAR_POP

Example 1. Использование функции COVAR_POP
SELECT
    COVAR_POP(alength, aheight) AS c_corr
FROM measure

COVAR_SAMP()

Доступно в

DSQL

Синтаксис
COVAR_SAMP(<expr1>, <expr2>)
Table 1. Параметры функции COVAR_SAMP
Параметр Описание

expr1, expr2

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

Тип возвращаемого результата

DOUBLE PRECISION

Функция COVAR_SAMP возвращает выборочную ковариацию (sample covariance) пары выражений с числовыми значениями.

Функция COVAR_SAMP(<expr1>, <expr2>) эквивалентна

(SUM(<expr1> * <expr2>) - SUM(<expr1>) * SUM(<expr2>) / COUNT(*))
  / (COUNT(*) - 1)

В случае если выборка записей пустая, содержит только 1 запись или содержит только значения NULL, результат будет содержать NULL.

Примеры COVAR_SAMP

Example 1. Использование функции COVAR_SAMP
SELECT
    COVAR_SAMP(alength, aheight) AS c_corr
FROM measure

STDDEV_POP()

Доступно в

DSQL

Синтаксис
STDDEV_POP(<expr>)
Table 1. Параметры функции STDDEV_POP
Параметр Описание

expr

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

Тип возвращаемого результата

DOUBLE PRECISION или NUMERIC в зависимости от типа expr.

Функция STDDEV_POP возвращает среднеквадратичное отклонение для группы.Значения NULL пропускаются.

Функция STDDEV_POP(<expr>) эквивалентна

SQRT(VAR_POP(<expr>))

В случае если выборка записей пустая или содержит только значения NULL, результат будет содержать NULL.

Примеры STDDEV_POP

Example 1. Использование функции STDDEV_POP
SELECT
  dept_no,
  STDDEV_POP(salary)
FROM employee
GROUP BY dept_no

STDDEV_SAMP()

Доступно в

DSQL

Синтаксис
STDDEV_SAMP(<expr>)
Table 1. Параметры функции STDDEV_SAMP
Параметр Описание

expr

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

Тип возвращаемого результата

DOUBLE PRECISION или NUMERIC в зависимости от типа expr

Функция STDDEV_SAMP возвращает стандартное отклонение для группы.Значения NULL пропускаются.

Функция STDDEV_SAMP(<expr>) эквивалентна

SQRT(VAR_SAMP(<expr>))

В случае если выборка записей пустая, содержит только 1 запись или содержит только значения NULL, результат будет содержать NULL.

Примеры STDDEV_SAMP

Example 1. Использование функции STDDEV_SAMP
SELECT
  dept_no,
  STDDEV_SAMP(salary)
FROM employee
GROUP BY dept_no

VAR_POP()

Доступно в

DSQL

Синтаксис
VAR_POP(<expr>)
Table 1. Параметры функции VAR_POP
Параметр Описание

expr

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

Тип возвращаемого результата

DOUBLE PRECISION или NUMERIC в зависимости от типа expr

Функция VAR_POP возвращает выборочную дисперсию для группы.Значения NULL пропускаются.

Функция VAR_POP(<expr>) эквивалентна

(SUM(<expr> * <expr>) - SUM(<expr>) * SUM(<expr>) / COUNT(<expr>))
  / COUNT(<expr>)

В случае если выборка записей пустая или содержит только значения NULL, результат будет содержать NULL.

Примеры VAR_POP

Example 1. Использование функции VAR_POP
SELECT
  dept_no,
  VAR_POP(salary)
FROM employee
GROUP BY dept_no

VAR_SAMP()

Доступно в

DSQL

Синтаксис
VAR_SAMP(<expr>)
Table 1. Параметры функции VAR_SAMP
Параметр Описание

expr

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

Тип возвращаемого результата

DOUBLE PRECISION или NUMERIC в зависимости от типа expr

Функция VAR_SAMP возвращает несмещённую выборочную дисперсию для группы.Значения NULL пропускаются.

Функция VAR_SAMP(<expr>) эквивалентна

(SUM(<expr> * <expr>) - SUM(<expr>) * SUM(<expr>) / COUNT(<expr>))
  / (COUNT(<expr>) - 1)

В случае если выборка записей пустая, содержит только 1 запись или содержит только значения NULL, результат будет содержать NULL.

Примеры VAR_SAMP

Example 1. Использование функции VAR_SAMP
SELECT
  dept_no,
  VAR_SAMP(salary)
FROM employee
GROUP BY dept_no

Функции линейной регрессии

Функции линейной регрессии полезны для продолжения линии тренда.Линия тренда — это, как правило, закономерность, которой придерживается набор значений.Линия тренда полезна для прогнозирования будущих значений.Этот означает, что тренд будет продолжаться и в будущем.Для продолжения линии тренда необходимо знать угол наклона и точку пересечения с осью Y.Набор линейных функций включает функции для вычисления этих значений.

В синтаксисе функций, у интерпретируется в качестве переменной, зависящей от х.

REGR_AVGX()

Доступно в

DSQL

Синтаксис
REGR_AVGX ( <y>, <x> )
Table 1. Параметры функции REGR_AVGX
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

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

Функция REGR_AVGX(<y>, <x>) эквивалентна

SUM(<exprX>) / REGR_COUNT(<y>, <x>)

<exprX> ::=
  CASE WHEN <x> IS NOT NULL AND <y> IS NOT NULL THEN <x> END

REGR_AVGY()

Доступно в

DSQL

Синтаксис
REGR_AVGY(<y>, <x>)
Table 1. Параметры функции REGR_AVGY
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

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

Функция REGR_AVGY(<y>, <x>) эквивалентна

SUM(<exprY>) / REGR_COUNT(<y>, <x>)

<exprY> ::=
  CASE WHEN <x> IS NOT NULL AND <y> IS NOT NULL THEN <y> END

REGR_COUNT()

Доступно в

DSQL

Синтаксис
REGR_COUNT(<y>, <x>)
Table 1. Параметры функции REGR_COUNT
Параметр Описание

y

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

x

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

Тип возвращаемого результата

BIGINT

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

Функция REGR_COUNT(<y>, <x>) эквивалентна

SUM(CASE WHEN <x> IS NOT NULL AND <y> IS NOT NULL THEN 1 END)

См. также:[fblangref-aggfuncs-sum]

REGR_INTERCEPT()

Доступно в

DSQL

Синтаксис
REGR_INTERCEPT(<y>, <x>)
Table 1. Параметры функции REGR_INTERCEPT
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

Функция REGR_INTERCEPT вычисляет точку пересечения линии регрессии с осью Y.

Функция REGR_INTERCEPT(<y>, <x>) эквивалентна

REGR_AVGY(<y>, <x>) - REGR_SLOPE(<y>, <x>) * REGR_AVGX(<y>, <x>)

Примеры REGR_INTERCEPT

Example 1. Прогнозирование объёмов продаж
WITH RECURSIVE years(byyear) AS (
  SELECT 1991 FROM rdb$database UNION ALL
  SELECT byyear+1 FROM years WHERE byyear < 2020
),
s AS (
  SELECT EXTRACT(YEAR FROM order_date) AS byyear,
         SUM(total_value) AS total_value
  FROM sales GROUP BY 1
),
regr AS (
  SELECT REGR_INTERCEPT(total_value, byyear) as intercept,
         REGR_SLOPE(total_value, byyear) as slope
FROM s)
SELECT years.byyear AS byyear,
       intercept + (slope * years.byyear) AS total_value
FROM years CROSS JOIN regr
BYYEAR     TOTAL_VALUE
----------------------------
 1991        118377,35
 1992        414557,62
 1993        710737,89
 1994       1006918,16
 1995       1303098,43
 1996       1599278,69
 1997       1895458,96
 1998       2191639,23
 1999       2487819,50
 2000       2783999,77
...

REGR_R2()

Доступно в

DSQL

Синтаксис
REGR_R2(<y>, <x>)
Table 1. Параметры функции REGR_R2
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

Функция REGR_R2 вычисляет коэффициент детерминации, или R-квадрат, линии регрессии.

Функция REGR_R2(<y>, <x>) эквивалентна

POWER(CORR(<y>, <x>), 2)

REGR_SLOPE()

Доступно в

DSQL

Синтаксис
REGR_SLOPE(<y>, <x>)
Table 1. Параметры функции REGR_SLOPE
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

Функция REGR_SLOPE вычисляет угол наклона линии регрессии.

Функция REGR_SLOPE(<y>, <x>) эквивалентна

COVAR_POP(<y>, <x>) / VAR_POP(<exprX>)

<exprX> :==
  CASE WHEN <x> IS NOT NULL AND <y> IS NOT NULL THEN <x> END

REGR_SXX()

Доступно в

DSQL

Синтаксис
REGR_SXX(<y>, <x>)
Table 1. Параметры функции REGR_SXX
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

Диагностическая статистика, используемая для анализа регрессии.

Функция REGR_SXX(<y>, <x>) вычисляется следующим образом:

REGR_COUNT(<y>, <x>) * VAR_POP(<exprX>)

<exprX> :==
  CASE WHEN <x> IS NOT NULL AND <y> IS NOT NULL THEN <x> END

REGR_SXY()

Доступно в

DSQL

Синтаксис
REGR_SXY(<y>, <x>)
Table 1. Параметры функции REGR_SXY
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

Диагностическая статистика, используемая для анализа регрессии.

Функция REGR_SXY(<y>, <x>) вычисляется следующим образом:

REGR_COUNT(<y>, <x>) * COVAR_POP(<y>, <x>)

REGR_SYY()

Доступно в

DSQL

Синтаксис
REGR_SYY(<y>, <x>)
Table 1. Параметры функции REGR_SYY
Параметр Описание

y

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

x

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

Тип возвращаемого результата

DOUBLE PRECISION

Диагностическая статистика, используемая для анализа регрессии.

Функция REGR_SYY(<y>, <x>) вычисляется следующим образом:

REGR_COUNT(<y>, <x>) * VAR_POP(<exprY>)

<exprY> :==
  CASE WHEN <x> IS NOT NULL AND <y> IS NOT NULL THEN <y> END