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

SE APLICA A: síSQL Server (a partir de 2012) síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2012) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Calcula un percentil concreto para los valores ordenados de un conjunto de filas completo o dentro de particiones distintas de un conjunto de filas de SQL ServerSQL Server.Computes a specific percentile for sorted values in an entire rowset or within distinct partitions of a rowset in SQL ServerSQL Server. Para un valor de percentil P dado, PERCENTILE_DISC ordena los valores de la expresión de la cláusula ORDER BY y devuelve el valor que tiene el menor valor de CUME_DIST (con respecto a la misma especificación de ordenación) que es mayor o igual que P. Por ejemplo, PERCENTILE_DISC (0.5) calculará el cincuentavo percentil (es decir, la mediana) de una expresión.For a given percentile value P, PERCENTILE_DISC sorts the values of the expression in the ORDER BY clause and returns the value with the smallest CUME_DIST value (with respect to the same sort specification) that is greater than or equal to P. For example, PERCENTILE_DISC (0.5) will compute the 50th percentile (that is, the median) of an expression. PERCENTILE_DISC calcula el percentil basándose en una distribución discreta de los valores de columna; el resultado es igual a un valor específico de la columna.PERCENTILE_DISC calculates the percentile based on a discrete distribution of the column values; the result is equal to a specific value in the column.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL (Transact-SQL)Topic link icon Transact-SQL Syntax Conventions (Transact-SQL)

SintaxisSyntax

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

ArgumentosArguments

literalliteral
El percentil que se va a calcular.The percentile to compute. El valor debe estar entre 0,0 y 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 ])
Especifica una lista de valores para ordenar y cuyo percentil se va a calcular.Specifies a list of values to sort and compute the percentile over. Solo se permite una order_by_expression.Only one order_by_expression is allowed. El criterio de ordenación predeterminado es ascendente.The default sort order is ascending. La lista de valores puede ser de cualquiera de los tipos de datos válidos para la operación de ordenación.The list of values can be of any of the data types that are valid for the sort operation.

OVER ( <partition_by_clause> )OVER ( <partition_by_clause> )
Divide el conjunto de resultados generado por la cláusula FROM en particiones a las que se aplica la función de percentil.Divides the result set produced by the FROM clause into partitions to which the percentile function is applied. Para más información, vea Cláusula OVER (Transact-SQL).For more information, see OVER Clause (Transact-SQL). Las cláusulas <ORDER BY clause> y <rows or range clause> no se pueden especificar en una función PERCENTILE_DISC.The <ORDER BY clause> and <rows or range clause>cannot be specified in a PERCENTILE_DISC function.

Tipos devueltosReturn Types

El tipo de valor devuelto viene determinado por el tipo order_by_expression.The return type is determined by the order_by_expression type.

Soporte de compatibilidadCompatibility Support

En el nivel de compatibilidad 110 y posteriores, WITHIN GROUP es una palabra clave reservada.Under compatibility level 110 and higher, WITHIN GROUP is a reserved keyword. Para obtener más información, vea Nivel de compatibilidad de ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

Notas generalesGeneral Remarks

Se omite cualquier valor NULL del conjunto de datos.Any nulls in the data set are ignored.

PERCENTILE_DISC es no determinista.PERCENTILE_DISC is nondeterministic. Para obtener más información, consulte Deterministic and Nondeterministic Functions.For more information, see Deterministic and Nondeterministic Functions.

EjemplosExamples

A.A. Ejemplo de sintaxis básicaBasic syntax example

En el ejemplo siguiente se usa PERCENTILE_CONT y PERCENTILE_DISC para buscar el salario medio de los empleados de cada departamento.The following example uses PERCENTILE_CONT and PERCENTILE_DISC to find the median employee salary in each department. Tenga en cuenta que estas funciones pueden no devolver el mismo valor.Note that these functions may not return the same value. Esto se debe a que PERCENTILE_CONT interpola el valor adecuado, tanto si existe en el conjunto de datos como si no existe, mientras que PERCENTILE_DISC siempre devuelve un valor real del conjunto.This is because PERCENTILE_CONT interpolates the appropriate value, whether or not it exists 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;  

A continuación se muestra un conjunto parcial de resultados.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

Ejemplos: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

B.B. Ejemplo de sintaxis básicaBasic syntax example

En el ejemplo siguiente se usa PERCENTILE_CONT y PERCENTILE_DISC para buscar el salario medio de los empleados de cada departamento.The following example uses PERCENTILE_CONT and PERCENTILE_DISC to find the median employee salary in each department. Tenga en cuenta que estas funciones pueden no devolver el mismo valor.Note that these functions may not return the same value. Esto se debe a que PERCENTILE_CONT interpola el valor adecuado, tanto si existe en el conjunto de datos como si no existe, mientras que PERCENTILE_DISC siempre devuelve un valor real del conjunto.This is because PERCENTILE_CONT interpolates the appropriate value, whether or not it exists 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;  

A continuación se muestra un conjunto parcial de resultados.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

Ver tambiénSee Also

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