FirebirdSQL logo

LIST()

Доступно в

DSQL

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

expr

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

separator

Разделитель.Выражение строкового типа.По умолчанию разделителем является запятая.

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

BLOB

Функция LIST возвращает строку, состоящую из значений аргумента, отличных от NULL в группе,разделенных запятой или заданным пользователем разделителем.Если нет значений, отличных от NULL (включая случай, когда группа пуста), возвращается NULL.

  • ALL (по умолчанию) приводит к обработке всех значений, отличных от NULL.Если указано ключевое слово DISTINCT, то дубликаты удаляются, за исключением случаев, когда expr является BLOB.

  • Необязательный аргумент separator может быть любым строковым выражением.Это позволяет указать, например, ascii_char (13) в качестве разделителя.

  • Аргументы expr и separator поддерживают BLOB любого размера и набора символов.

  • Дата / время и числовые аргументы неявно преобразуются в строки перед объединением.

  • Результатом функции является текстовый BLOB, кроме случаев, когда expr является BLOB другого подтипа.

  • Порядок значений в списке не определен — порядок, в котором строки объединяются, определяется порядком чтения из исходного набора данных.Для таблиц такой порядок обычно не определяется.Если порядок важен, исходные данные можно предварительно отсортировать используя производную таблицы или аналогичное средство.

Примеры LIST

Example 1. Использование функции LIST

Получение списка, порядок не определён.

SELECT LIST (display_name, '; ')
FROM GR_WORK;
Example 2. Использование функции LIST с заданным порядком

Получение списка в алфавитном порядке.

SELECT LIST (display_name, '; ')
FROM (SELECT display_name
      FROM GR_WORK
      ORDER BY display_name);
См. также:

SELECT.

docnext count = 32

MAX()

Доступно в

DSQL

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

expr

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

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

тот же что и аргумент функции expr.

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

  • Если группа пуста или содержит только NULL, результатом будет NULL.

  • Если входным аргументом является строка, то функция вернет значение, которое будет последним в сортировке с использованием соответствующего COLLATE.

  • Эта функция полностью поддерживает текстовые BLOB любого размера и набора символов.

Note

Параметр DISTINCT не имеет смысла при использовании функцией MAX и доступен только для совместимости со стандартом.

Примеры MAX

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

SELECT, [fblangref-aggfuncs-min].

MIN()

Доступно в

DSQL

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

expr

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

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

тот же что и аргумент функции expr

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

  • Если группа пуста или содержит только NULL, результатом будет NULL.

  • Если входным аргументом является строка, то функция вернет значение, которое будет первым в сортировке с использованием соответствующего COLLATE.

  • Эта функция полностью поддерживает текстовые BLOB любого размера и набора символов.

Note

Параметр DISTINCT не имеет смысла при использовании функцией MIN и доступен только для совместимости со стандартом.

Примеры MIN

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

SELECT, [fblangref-aggfuncs-max].

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.

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

Статистические функции являются агрегатными функциями.Эти функции не учитывают значения 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