PERCENTILE_CONT (Transact-SQL)

Вычисляет процентиль на основе постоянного распределения значения столбца в SQL Server. Результат интерполируется и может отличаться от всех конкретных значений из этого столбца.

Применимо для следующих объектов: SQL Server (начиная с 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_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

См. также

Справочник

PERCENTILE_DISC (Transact-SQL)