Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вычисляет определенный процентиль для отсортированных значений из всего набора строк или в пределах определенных секций набора строк в SQL Server. Для данного значения процентиля P функция PERCENTILE_DISC сортирует значения выражения из предложения ORDER BY и возвращает значение с наименьшим значением CUME_DIST (в отношении той же спецификации сортировки), которое больше или равно значению P. Например, функция PERCENTILE_DISC (0.5) вычислит 50-й процентиль (то есть медиану) выражения. Функция PERCENTILE_DISC вычисляет процентиль на основе дискретного распределения значений столбца. Результат вычисления равен определенному значению из столбца.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии). |
Синтаксические обозначения в Transact-SQL (Transact-SQL)
Синтаксис
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Аргументы
literal
Процентиль, который необходимо вычислить. Значение должно находиться в диапазоне от 0,0 до 1,0.WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
Указывает список числовых значений, который следует отсортировать и по которому будет вычисляться процентиль. Можно использовать только один параметр order_by_expression. По умолчанию задан порядок сортировки по возрастанию.OVER ( <partition_by_clause> )
Делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция вычисления процентиля. Дополнительные сведения см. в разделе Предложение OVER (Transact-SQL). В функции PERCENTILE_DISC нельзя указывать <предложение ORDER BY>, а также <строки или предложение диапазона>.
Типы возвращаемых значений
Тип возвращаемого значения определяется типом order_by_expression.
Поддержка совместимости
При уровне совместимости 110 и выше WITHIN GROUP является зарезервированным ключевым словом. Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
Общие замечания
Все значения NULL, имеющиеся в наборе данных, игнорируются.
Функция PERCENTILE_DISC не детерминирована. Дополнительные сведения см. в разделе Детерминированные и недетерминированные функции.
Примеры
А.Пример простого синтаксиса
В следующем примере функции 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