Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Функция COVAR_SAMP


Описание

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






Синтаксис SQL 2003

Переменная вызывается с указанием двух переменных: одной — зависимой и одной независимой.

COVAR_SAMP {зависимая, независимая)

Функция не рассматривает пары, в которых либо зависимая переменная, либо независимая, либо обе равны NULL. Результат функции будет пустым значением, если все входные пары включают пустые значения.





Oracle

Платформа Oracle поддерживает синтаксис SQL 2003 и, кроме того, реализует следующий аналитический синтаксис.

COVAR_SAMP (зависимая, независимая) OVER (оконное_предложение)

За объяснениями параметра оконное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.






DB2, MySQL, PostgreSQL и SQL Server

Эти платформы не поддерживают ни одну из форм функции COVARJSAMP. Пример

В следующем примере использования функции COVAR_SAMP используются данные, выводимые первой инструкцией SELECT.


CUME_DIST

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

число_строк_предшествующих_гипотетической + число_строк_равных_гипотетической) / число_строк_в_группе

Запомните, что в число_строк_в_группе входит гипотетическая строка, которую вы указываете при вызове функции.






Синтаксис SQL 2003

В следующей схеме синтаксиса элементы списка значений соответствуют по положению элементам списка_для_сортировки. Следовательно, оба списка должны содержать одинаковое число выражений.

CUME_DIST(список_значений) WITHIN, GROUP (ORDER BY список_для_сортировки) список_значений ::= выражение [.выражение…]

список_для_сортировки ::=элемент_сортировки1 [, элементы_сортировки, …] элемент_сортировки ::= выражение [ASC|DESC] [NULLS FIRST|NULLS LAST]





Oracle

Платформа Oracle поддерживает синтаксис SQL 2003, а также следующий аналитический синтаксис.

CUME_DIST OVER ([секционирование] сортировка)

За объяснениями предложений секционирование и сортировка обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.






DB2, MySQL, PostgreSQL и SQL Server

В этих платформах нет реализации агрегатной функции CUMEJDIST.

Пример:

В следующем примере определяется относительный ранг новой гипотетической строки (num=4, odd=1) в каждой группе строк из таблицы test4, где группы различаются по значениям столбца odd.

В группе odd=0 новая строка идет после трех строк (0.0), (2.0) и (4.0). Равна она будет сама себе. Общее число строк в группе будет равно 4, включая саму гипотетическую строку. Следовательно, относительный ранг будет вычислен следующим образом.

(3 строки предшествующие + 1 равная) / (3 в группе + 1 гипотетическая)=4/4=1

В группе odd=1 новая строка будет идти после трех — (1.1), (3.1) и дубликата (3.1). Опять только одна равная строка — сама гипотетическая строка. Количество строк в группе равно 5, включая гипотетическую строку. Относительный ранг будет следующий.

(3 строки предшествующие + 1 равная) / (4 в группе + 1 гипотетическая)=4/5=0.8


DENSE_RANK

Для указанной гипотетической строки определяется ее ранг в группе. Этот ранг -плотный. Ранги не пропускаются, даже если группа содержит строки с одинаковым рангом.

В следующей схеме синтаксиса элементы списка значений соответствуют по положению элементам списка_для сортировки. Следовательно, оба списка должны содержать одинаковое число выражений.

DENSE_RANK(список_значений) WITHIN GROUP (ORDER BY список_для_сортировки)

список_значений ::= выражение [.выражение…]

список_для_сортировки ::= элемент_сортировки1 [, элементы_сортировки…]

элемент_сортировки ::= выражение [ASCiDESC] [NULLS FIRSTINULLS LAST]





Oracle

Платформа Oracle поддерживает синтаксис SQL 2003, а также следующий аналитический синтаксис.

DENSE_RANK() OVER ([секционирование] сортировка)

За объяснениями предложений секционирование и сортировка обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.






DB2, MySQL, PostgreSQL и SQL Server

В этих платформах нет реализации агрегатной функции DENSEJRANK. Однако DB2 поддерживает DENSE_RANK в виде аналитической функции. За объяснениями обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.

Пример:

В следующем примере определяется плотный ранг новой гипотетической строки (num=4, odd=1) в каждой группе строк из таблицы test4, где группы различаются по значениям столбца odd.

В группе odd=0 новая строка идет после трех строк (0.0), (2.0) и (4.0), и, таким образом, ее положение будет 4. В группе odd=1 новая строка будет идти после трех -(1.1), (3.1) и дубликата (3.1). В этом случае дубликаты (3.1) будут оба иметь ранг #2, так что новая строка будет иметь ранг 3. Сравните с функцией RANK, которая дает другой результат.


MIN и МАХ

Функции MIN(выражение) и МАХ(выражение) определяют минимальное и максимальное значения выражения (строкового, дата/время или числового) в наборе строк. С этими функциями можно использовать предложения DISTINCT’и ALL, но на результат они не влияют.






Синтаксис SQL 2003

MIN([ALL | DISTINCT] выражение) MAX([ALL | DISTINCT] выражение)


PostgreSQL и SQL Server

Эти платформы поддерживают для функций MIN и МАХ синтаксис стандарта SQL 2003.


DB2 и Oracle

Платформы DB2 и Oracle поддерживают синтаксис ANSI, а также реализуют следующий аналитический синтаксис.

MIN([ALL | DISTINCT] выражение) OVER (оконное_предложение) MAX([ALL | DISTINCT] выражение) OVER (оконное_предложение)

За объяснениями параметра окопное предложение обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.


MySQL

Платформа MySQL поддерживает для функций M1N и МАХ стандартный синтаксис SQL 2003. Кроме того, MySQL поддерживает функции LEASTQ и GREATESTQ с той же функциональностью.

Пример:

Следующий запрос определяет наилучший и наихудший объем продаж для каждой книги.

SELECT
MIN(ytd_sales),
MAX(ytd_sales)
FROM titles;

Агрегатные функции часто применяются в предложениях HAVING запросов, содержащих предложение GROUP BY. Следующий запрос отбирает все категории (типы) книг, для которых средняя цена книг в категории превышает 15.00$.

SELECT
TYPE ‘Category’,
AVG(price) ‘Average Price’
FROM titles
GROUP BY type
HAVING AVG(price) > 15


PERCENT_RANK

Генерируется значение относительного ранга для гипотетической строки путем деления ранга этой строки, за вычетом 1, на число строк в группе.






Синтаксис SQL 2003

В следующей схеме синтаксиса элементы списка значений соответствуют по положению элементам списка_для сортировки. Следовательно, оба списка должны содержать одинаковое число выражений.

PERCENT_RANK(список_значений) WITHIN GROUP (ORDER BY список_для_сортировки)

список_значений ::= выражение [, выражение…]

список_для_сортировки ::= элемент_сортировки1 [, элементы_сортировки…]

элемент_сортировки ::= выражение [ASC|DESC] [NULLS FIRST)NULLS LAST]





Oracle

Платформа Oracle поддерживает синтаксис SQL 2003, а также следующий аналитический синтаксис.

PERCENT_RANK() OVER ([секционирование] сортировка)

За объяснениями предложений секционирование и сортировка обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.






DB2, MySQL, PostgreSQL и SQL Server

В этих платформах нет реализации агрегатной функции PERCENTRANK. Пример

В следующем примере определяется процентный ранг новой гипотетической строки (пит=4, odd=1) в каждой группе строк из таблицы test4, где группы различаются по значениям столбца odd.

В группе odd=0 новая строка идет после трех строк (0.0), (2.0) и (4.0), и, таким образом, ее положение будет 4. Ранг вычисляется так: (ранг 4 — 1)/3 строки=100%. В группе odd=1 новая строка будет идти после (1.1), (3.1) и дубликата (3.1). Так что новая строка будет иметь ранг #4. Вычисление ранга для odd=1: (ранг 4 — 1)/4 строки=3/4=75%.


PERCENTILE CONT

Генерируется интерполяционное значение, соответствующее указанному процентилю.






Синтаксис SQL 2003

В следующем синтаксисе проценты — это число от 0 до 1.

PERCENTILE_CONT(процентиль) WITHIN GROUP (ORDER BY список_для_сортировки)

список_для_сортировки ::=элемент_сортировки [, элемент_сортировки…]

элемент_сортировки ::= выражение [ASCj DESC] [NULLS FIRST|NULLS LAST]

Платформа Oracle позволяет использовать в предложении ORDER BY только одно выражение.

PERCENTILE_CONT(процентиль) WITHIN GROUP (ORDER BY выражение)

Кроме того, Oracle позволяет использовать оконный синтаксис.

PERCENTILE_CONT(процентиль) WITHIN GROUP(ORDER BY список_для_сортировки) OVER (секционирование)

За объяснениями предложения секционирование обращайтесь к разделу «Оконные функции ANSI SQL» ниже в этой главе.






DB2, MySQL, PostgreSQL и SQL Server

В этих платформах нет реализации агрегатной функции PERCENTILE CONT. Пример

В следующем примере данные таблицы test4 группируются по столбцу odd и вызывается функция PERCENTILE_CONT, которая возвращает значение 50-го процентиля для каждой группы.

Источник