Примеры COUNT
SELECT
dept_no,
COUNT(*) AS cnt,
COUNT(DISTINCT name) AS cnt_name
FROM employee
GROUP BY dept_no
COUNT
SELECT
dept_no,
COUNT(*) AS cnt,
COUNT(DISTINCT name) AS cnt_name
FROM employee
GROUP BY dept_no
LIST()
DSQL
LIST([ALL | DISTINCT] <expr> [, separator])
Параметр | Описание |
---|---|
expr |
Выражение.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF, которая возвращает строковый тип данных или |
separator |
Разделитель.Выражение строкового типа.По умолчанию разделителем является запятая. |
BLOB
Функция LIST
возвращает строку, состоящую из значений аргумента, отличных от NULL
в группе,разделенных запятой или заданным пользователем разделителем.Если нет значений, отличных от NULL
(включая случай, когда группа пуста), возвращается NULL
.
ALL
(по умолчанию) приводит к обработке всех значений, отличных от NULL
.Если указано ключевое слово DISTINCT
, то дубликаты удаляются, за исключением случаев, когда expr является BLOB
.
Необязательный аргумент separator может быть любым строковым выражением.Это позволяет указать, например, ascii_char (13) в качестве разделителя.
Аргументы expr и separator поддерживают BLOB
любого размера и набора символов.
Дата / время и числовые аргументы неявно преобразуются в строки перед объединением.
Результатом функции является текстовый BLOB
, кроме случаев, когда expr является BLOB
другого подтипа.
Порядок значений в списке не определен — порядок, в котором строки объединяются, определяется порядком чтения из исходного набора данных.Для таблиц такой порядок обычно не определяется.Если порядок важен, исходные данные можно предварительно отсортировать используя производную таблицы или аналогичное средство.
LIST
Получение списка, порядок не определён.
SELECT LIST (display_name, '; ')
FROM GR_WORK;
Получение списка в алфавитном порядке.
SELECT LIST (display_name, '; ')
FROM (SELECT display_name
FROM GR_WORK
ORDER BY display_name);
MAX()
DSQL
MAX([ALL | DISTINCT] <expr>)
Параметр | Описание |
---|---|
expr |
Выражение.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF.Агрегатные функции в качестве выражения не допускаются. |
тот же что и аргумент функции expr.
Функция MAX
возвращает максимальный элемент выборки, которые не равны NULL.
Если группа пуста или содержит только NULL
, результатом будет NULL
.
Если входным аргументом является строка, то функция вернет значение, которое будет последним в сортировке с использованием соответствующего COLLATE
.
Эта функция полностью поддерживает текстовые BLOB
любого размера и набора символов.
Note
|
Параметр |
MAX
MAX
SELECT
dept_no,
MAX(salary)
FROM employee
GROUP BY dept_no
MIN()
DSQL
MIN([ALL | DISTINCT] <expr>)
Параметр | Описание |
---|---|
expr |
Выражение.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF.Агрегатные функции в качестве выражения не допускаются. |
тот же что и аргумент функции expr
Функция MIN
возвращает минимальный элемент выборки, которые не равны NULL
.
Если группа пуста или содержит только NULL
, результатом будет NULL
.
Если входным аргументом является строка, то функция вернет значение, которое будет первым в сортировке с использованием соответствующего COLLATE
.
Эта функция полностью поддерживает текстовые BLOB
любого размера и набора символов.
Note
|
Параметр |
MIN
MIN
SELECT
dept_no,
MIN(salary)
FROM employee
GROUP BY dept_no
SUM()
DSQL
SUM([ALL | DISTINCT] <expr>)
Параметр | Описание |
---|---|
expr |
Выражение.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF, которая возвращает числовой тип данных.Агрегатные функции в качестве выражения не допускаются. |
DOUBLE PRECISION
, DECFLOAT
или масштабируемое целое (INTEGER
, BIGINT
или INT128
) в зависимости от типа аргумента функции expr.Обычно, если это возможно, выбирается тип с большей вместимостью, чем тип выражения expr.
Функция SUM
возвращает сумму элементов выборки, которые не равны NULL
.
ALL
является опцией по умолчанию — обрабатываются все значения из выборки, не содержащие NULL
.При указании DISTINCT
из выборки устраняются дубликаты, после чего осуществляется суммирование.
При пустой выборке, или при выборке из одних NULL
функция возвратит NULL
.
SUM
SELECT
dept_no,
SUM(salary)
FROM employee
GROUP BY dept_no
Статистические функции являются агрегатными функциями.Эти функции не учитывают значения NULL
.К аргументу статистической функции не применимы параметры ALL
и DISTINCT
.
Статистические функции часто используются совместно с предложением GROUP BY
.
CORR()
DSQL
CORR(<expr1>, <expr2>)
Параметр | Описание |
---|---|
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
SELECT
CORR(alength, aheight) AS c_corr
FROM measure
COVAR_POP()
DSQL
COVAR_POP(<expr1>, <expr2>)
Параметр | Описание |
---|---|
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
COVAR_POP
SELECT
COVAR_POP(alength, aheight) AS c_corr
FROM measure
COVAR_SAMP()
DSQL
COVAR_SAMP(<expr1>, <expr2>)
Параметр | Описание |
---|---|
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
COVAR_SAMP
SELECT
COVAR_SAMP(alength, aheight) AS c_corr
FROM measure
STDDEV_POP()
DSQL
STDDEV_POP(<expr>)
Параметр | Описание |
---|---|
expr |
Выражение возвращает числовой тип данных.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF.Агрегатные функции в качестве выражения не допускаются. |
DOUBLE PRECISION
или NUMERIC
в зависимости от типа expr.
Функция STDDEV_POP
возвращает среднеквадратичное отклонение для группы.Значения NULL
пропускаются.
Функция STDDEV_POP(<expr>)
эквивалентна
SQRT(VAR_POP(<expr>))
В случае если выборка записей пустая или содержит только значения NULL
, результат будет содержать NULL
.
STDDEV_POP
STDDEV_POP
SELECT
dept_no,
STDDEV_POP(salary)
FROM employee
GROUP BY dept_no
STDDEV_SAMP()
DSQL
STDDEV_SAMP(<expr>)
Параметр | Описание |
---|---|
expr |
Выражение возвращает числовой тип данных.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF.Агрегатные функции в качестве выражения не допускаются. |
DOUBLE PRECISION
или NUMERIC
в зависимости от типа expr
Функция STDDEV_SAMP
возвращает стандартное отклонение для группы.Значения NULL
пропускаются.
Функция STDDEV_SAMP(<expr>)
эквивалентна
SQRT(VAR_SAMP(<expr>))
В случае если выборка записей пустая, содержит только 1 запись или содержит только значения NULL
, результат будет содержать NULL
.
STDDEV_SAMP
STDDEV_SAMP
SELECT
dept_no,
STDDEV_SAMP(salary)
FROM employee
GROUP BY dept_no
VAR_POP()
DSQL
VAR_POP(<expr>)
Параметр | Описание |
---|---|
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
VAR_POP
SELECT
dept_no,
VAR_POP(salary)
FROM employee
GROUP BY dept_no
VAR_SAMP()
DSQL
VAR_SAMP(<expr>)
Параметр | Описание |
---|---|
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
VAR_SAMP
SELECT
dept_no,
VAR_SAMP(salary)
FROM employee
GROUP BY dept_no
Функции линейной регрессии полезны для продолжения линии тренда.Линия тренда — это, как правило, закономерность, которой придерживается набор значений.Линия тренда полезна для прогнозирования будущих значений.Этот означает, что тренд будет продолжаться и в будущем.Для продолжения линии тренда необходимо знать угол наклона и точку пересечения с осью Y.Набор линейных функций включает функции для вычисления этих значений.
В синтаксисе функций, у интерпретируется в качестве переменной, зависящей от х.
REGR_AVGX()
DSQL
REGR_AVGX ( <y>, <x> )
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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
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>)
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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>)
Параметр | Описание |
---|---|
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