Функция PERCENTILE DISC
Из группы возвращается значение, которое имеет наименьшее кумулятивное распределение, большее или равное указанному процентилю.
В следующем синтаксисе процентиль — это число от 0 до 1.
PERCENTILE_DISC(процентиль) WITHIN GROUP (ORDER BY список_для_сортировки)
список_для_сортировки ::=элемент_сортировки [, элемент_сортировки…]
элемент_сортировки ::= выражение [ASC|DESC] [NULLS FIRSTINULLS LAST]
Платформа Oracle позволяет использовать в предложении ORDER BY только одно выражение.
PERCENTILE_DISC(процентиль) WITHIN GROUP (ORDER BY выражение)
Кроме того, Oracle позволяет использовать оконный синтаксис.
PERCENTILE_DISC(процентиль) WITHIN GROUP
(ORDER BY список_для_сортировки) OVER (секционирование)
За объяснениями предложения секционирование обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.
DB2, MySQL, PostgreSQL и SQL Server
В этих платформах нет реализации агрегатной функции PERCENTILE_DISC. Пример
Следующий пример сходен с примером функции PERCENTILEJCONT, за исключением того, что для каждой группы возвращается значение ближайшее, но не превышающее 60-го процентиля.
Для указанной гипотетической строки вычисляется ранг в группе. Это не плотный ранг. Если в группе есть строки, имеющие одинаковый ранг, то возможен пропуск рангов. Если вы хотите использовать плотный ранг, применяйте функцию DENSERANK.
В следующей схеме синтаксиса элементы списка значений соответствуют по положению элементам списка для сортировки. Следовательно, оба списка должны содержать одинаковое число выражений.
(список_значений) WITHIN GROUP (ORDER BY список_для_сортировки)
список_значений ::= выражение [, выражение…]
список_для_сортировки :=элемент_сортировки [, элемент_сортировки…]
элемент_сортировки ::= выражение [ASC j DESC] [NULLS FIRST|NULLS LAST]
Платформа Oracle поддерживает синтаксис SQL 2003, а также следующий аналитический синтаксис.
RANK() OVER ([секционирование’] сортировка)
За объяснениями предложений секционирование и сортировка обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.
DB2, MySQL, PostgreSQL и SQL Server
В этих платформах нет реализации агрегатной функции RANK.
Пример
В следующем примере определяется ранг новой гипотетической строки (num.=4, odd=1) в каждой группе строк из таблицы test4, где группы различаются по значениям столбца odd.
В обоих случаях ранг гипотетической функции будет 4. В группе odd=0 новая строка идет после строк (0.0), (2.0) и (4.0), и, таким образом, ее положение будет 4. В группе odd=1 новая строка будет идти после (1.1), (3.1) и дубликата (3.1). В этом случае новая строка идет после трех строк, так что она будет иметь ранг 4. Сравните с функцией DENSE_RANK.
В SQL 2003 определяется семейство функций, имена которых начинаются с REGR_ и которые связаны с различными аспектами линейной регрессии. Эти функции работают с линией регрессии, получаемой методом наименьших квадратов.
Ниже приводится синтаксис и краткое описание функций REGR_.
REGRA VGX(3aeucuMca, независимая)
Средняя величина (как в AVG(x)) значений независимых переменных.
REGR_AVGY(3aeucuMm, независимая)
Средняя величина (как bAVG(y)) значений зависимых переменных.
REGR_COUNT(3aeucuMOH, независимая)
Определяется количество пар чисел, не содержащих пустых (NULL) значений.
REGR_INTERCEPT(3aeucuMm, независимая)
Вычисляется точка пересечения линии регрессии с осью Y (y-intercept).
REGR_R2(3aeucuMm, независимая)
Вычисляется коэффициент детерминации.
REGRSLOPE(3aeucuMcm, независимая)
Вычисляется крутизна линии регрессии.
REGR_SXX(зависимая, независимая)
Сумма квадратов значений независимых переменных.
REGRSXY(зависимая, независимая)
Сумма произведений каждой пары значений.
REGRSYY(зависимая, независимая)
Сумма квадратов значений зависимых переменных.
Функции REGR_ применимы только к парам чисел, содержащим непустые значения. Пара, содержащая одно или два пустых значения, игнорируется.
Платформы DB2 и Oracle поддерживают синтаксис SQL 2003 для всех функций REGR_. Кроме того, DB2 поддерживает укороченное имя REGRJCPT вместо REGR INTERCEPT.
Oracle поддерживает следующий аналитический синтаксис.
ВЕСП_функция (зависимая, независимая) OVER (оконное_предложение)
За объяснениями параметра оконное_предлсасение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.
MySQL, PostgreSQL и SQL Server
Эти платформы не имеют реализации семейства функций REGR.
Пример
В следующем примере функции REGR_COUNTдемонстрируется, что функция игнорирует пары значений, содержащие одно или два пустых значения. Таблица test3 содержит три пары непустых чисел и еще три пары, в которых хотя бы одно значение — NULL.
Функция REGRCOUNT игнорирует пары, содержащие пустые значения, и считает только те пары, значения в которых не равны NULL.
Точно так же и все другие функции семейства REGR_ перед вычислениями отфильтровывают пары, содержащие пустые значения.
Используйте функцию STDDEV_POP, чтобы найти стандартное отклонение совокупности в группе числовых значений.
STDDEV_POP(числовое_выражение)
Используется функция STDDEV. В DB2 и MySQL функция STDDEV возвращает стандартное отклонение совокупности.
В этой платформе нет функции для вычисления стандартного отклонения совокупности.
Платформа Oracle поддерживает стандартный синтаксис, а также следующий аналитический синтаксис.
STDDEV_POP(численное_выражение) OVER (оконное_предложение)
За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.
Используйте функцию STDEVP.
Применяйте функцию STDEVJSAMP для того, чтобы найти выборочное стандартное отклонение в группе числовых значений.
STDDEV_SAMP(числовое_выражение)
Платформа Oracle поддерживает стандартный синтаксис. Кроме того, в Oracle есть функция STDDEV, которая работает почти так же, как STDDEVJSAMP, за исключением того, что она возвращает ноль (непустое значение), если в наборе есть только одно значение.
Также Oracle поддерживает аналитический синтаксис.
STDDEV_SAMP(числовое_выражение) OVER (оконное_предложение)
За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.
У этой платформы нет функции для вычисления выборочного стандартного отклонения.
В MySQL нет функции для вычисления выборочного стандартного отклонения. В MySQL есть функция под названием STDDEV, но она возвращает стандартное отклонение совокупности.
Используйте функцию STDDEV.
Используйте функцию STDEV (ojywo D!).
VAR_POP
Используйте функцию VARPOP для вычисления дисперсии генеральной совокупности для набора значений.
VAR_P0P(числовое_выражение)
Эти платформы не предлагают функций для вычисления дисперсии совокупности.
Используйте функцию VARIANCE, которая в MySQL возвращает дисперсию генеральной совокупности.
Платформа Oracle поддерживает стандартный синтаксис, а также следующий аналитический синтаксис.
УАН_РОР(числовое_выражение) OVER {оконное_предложение)
За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.
Используйте функцию VARP.