PERCENTILE_CONT (Transact-SQL)PERCENTILE_CONT (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Вычисляет процентиль на основе постоянного распределения значения столбца в SQL ServerSQL Server.Calculates a percentile based on a continuous distribution of the column value in SQL ServerSQL Server. Результат интерполируется и может отличаться от всех конкретных значений из этого столбца.The result is interpolated and might not be equal to any of the specific values in the column.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL (Transact-SQL)Topic link icon Transact-SQL Syntax Conventions (Transact-SQL)

СинтаксисSyntax

PERCENTILE_CONT ( numeric_literal )   
    WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )  
    OVER ( [ <partition_by_clause> ] )  

АргументыArguments

numeric_literalnumeric_literal
Процентиль, который необходимо вычислить.The percentile to compute. Значение должно находиться в диапазоне от 0.0 до 1,0.The value must range between 0.0 and 1.0.

WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
Указывает список числовых значений, который следует отсортировать и по которому будет вычисляться процентиль.Specifies a list of numeric values to sort and compute the percentile over. Разрешен только один аргумент order_by_expression.Only one order_by_expression is allowed. Результатом вычисления выражения должен быть точный или приблизительный числовой тип. Другие типы данных недопустимы.The expression must evaluate to an exact or approximate numeric type, with no other data types allowed. Точными числовыми типами являются int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney и money.Exact numeric types are int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney, and money. Приблизительными числовыми типами являются float и real.Approximate numeric types are float and real. По умолчанию задан порядок сортировки по возрастанию.The default sort order is ascending.

OVER ( <partition_by_clause> )OVER ( <partition_by_clause> )
Делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция вычисления процентиля.Divides the result set produced by the FROM clause into partitions to which the percentile function is applied. Дополнительные сведения см. в статье Предложение OVER (Transact-SQL).For more information, see OVER Clause (Transact-SQL). В функции PERCENTILE_CONT нельзя указывать <предложение ORDER BY>, а также <предложение ROWS или RANGE> синтаксиса OVER.The <ORDER BY clause> and <rows or range clause> of the OVER syntax can't be specified in a PERCENTILE_CONT function.

Типы возвращаемых данныхReturn Types

float(53)float(53)

Поддержка совместимостиCompatibility Support

При уровне совместимости 110 и выше WITHIN GROUP является зарезервированным ключевым словом.Under compatibility level 110 and higher, WITHIN GROUP is a reserved keyword. Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

Общие замечанияGeneral Remarks

Все значения NULL, имеющиеся в наборе данных, игнорируются.Any nulls in the data set are ignored.

Функция PERCENTILE_CONT не детерминирована.PERCENTILE_CONT is nondeterministic. Дополнительные сведения см. в разделе Deterministic and Nondeterministic Functions.For more information, see Deterministic and Nondeterministic Functions.

ПримерыExamples

A.A. Пример простого синтаксисаBasic syntax example

В следующем примере функции PERCENTILE_CONT и PERCENTILE_DISC используются для определения медианной заработной платы сотрудников в каждом отделе.The following example uses PERCENTILE_CONT and PERCENTILE_DISC to find the median employee salary in each department. Эти функции могут возвращать разные значения.These functions may not return the same value. Функция PERCENTILE_CONT интерполирует соответствующее значение независимо от того, существует ли оно в наборе данных, тогда как функция PERCENTILE_DISC всегда возвращает фактическое значение из набора.PERCENTILE_CONT interpolates the appropriate value, which may or may not exist in the data set, while PERCENTILE_DISC always returns an actual value from the set.

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;  

Здесь приводится частичный результирующий набор.Here is a partial result set.

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

Примеры: Хранилище данных SQL AzureAzure SQL Data Warehouse и Параллельное хранилище данныхParallel Data WarehouseExamples: Хранилище данных SQL AzureAzure SQL Data Warehouse and Параллельное хранилище данныхParallel Data Warehouse

Б.B. Пример простого синтаксисаBasic syntax example

В следующем примере функции PERCENTILE_CONT и PERCENTILE_DISC используются для определения медианной заработной платы сотрудников в каждом отделе.The following example uses PERCENTILE_CONT and PERCENTILE_DISC to find the median employee salary in each department. Эти функции могут возвращать разные значения.These functions may not return the same value. Функция PERCENTILE_CONT интерполирует соответствующее значение независимо от того, существует ли оно в наборе данных, тогда как функция PERCENTILE_DISC всегда возвращает фактическое значение из набора.PERCENTILE_CONT interpolates the appropriate value, which may or may not exist in the data set, while PERCENTILE_DISC always returns an actual value from the set.

-- Uses AdventureWorks  
  
SELECT DISTINCT DepartmentName  
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate)  
    OVER (PARTITION BY DepartmentName) AS MedianCont  
,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate)  
    OVER (PARTITION BY DepartmentName) AS MedianDisc  
FROM dbo.DimEmployee;  
  

Здесь приводится частичный результирующий набор.Here is a partial result set.

DepartmentName        MedianCont    MedianDisc
--------------------   ----------   ----------
Document Control       16.826900    16.8269
Engineering            34.375000    32.6923
Human Resources        17.427850    16.5865
Shipping and Receiving 9.250000      9.0000

См. также:See Also

PERCENTILE_DISC (Transact-SQL)PERCENTILE_DISC (Transact-SQL)