Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вычисляет процентиль на основе постоянного распределения значения столбца в SQL Server 2012. Результат интерполируется и может отличаться от всех конкретных значений из этого столбца.
Синтаксические обозначения в Transact-SQL (Transact-SQL)
Синтаксис
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Аргументы
numeric_literal
Процентиль, который необходимо вычислить. Значение должно находиться в диапазоне от 0.0 до 1,0.WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
Указывает список числовых значений, который следует отсортировать и по которому будет вычисляться процентиль. Можно использовать только один параметр order_by_expression. Результатом вычисления выражения должен быть точный числовой тип (int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney, money) или приблизительный числовой тип (float, real). Другие типы данных не допускаются. По умолчанию задан порядок сортировки по возрастанию.OVER ( <partition_by_clause> )
Делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция вычисления процентиля. Дополнительные сведения см. в разделе Предложение OVER (Transact-SQL). В функции PERCENTILE_CONT нельзя указывать <предложение ORDER BY>, а также <строки или предложение диапазона> синтаксиса OVER.
Типы возвращаемых данных
float(53)
Поддержка совместимости
При уровне совместимости 110 WITHIN GROUP является зарезервированным ключевым словом. Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
Общие примечания
Все значения NULL, имеющиеся в наборе данных, игнорируются.
Примеры
А.Пример простого синтаксиса
В следующем примере функции PERCENTILE_CONT и PERCENTILE_DISC используются для определения медианной заработной платы сотрудников в каждом отделе. Обратите внимание на то, что эти функции могут возвращать разные значения. Это происходит потому, что функция PERCENTILE_CONT интерполирует соответствующее значение независимо от того, существует ли оно в наборе данных, тогда как функция PERCENTILE_DISC всегда возвращает фактически существующее в наборе значение.
USE AdventureWorks2012;
SELECT DISTINCT Name AS DepartmentName
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianCont
,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
Здесь приводится частичный результирующий набор.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865