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 a rowset's distinct partitions in SQL ServerSQL Server. Para un valor de percentil determinado P, PERCENTILE_DISC ordena los valores de expresión en la cláusula ORDER BY.For a given percentile value P, PERCENTILE_DISC sorts the expression values in the ORDER BY clause. A continuación, devuelve el valor con el menor valor de CUME_DIST dado (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.It then returns the value with the smallest CUME_DIST value given (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;PERCENTILE_DISC calculates the percentile based on a discrete distribution of the column values. el resultado es igual a un valor específico de la columna.The result is equal to a specific column value.

Icono de vínculo a artículos Convenciones de sintaxis de Transact-SQL (Transact-SQL)Article 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 de la cláusula FROM en particiones.Divides the FROM clause's result set into partitions. La función percentile se aplica a estas particiones.The percentile function is applied to these partitions. 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>can't 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

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 each department's median employee salary. Tenga en cuenta que puede que estas funciones no devuelvan el mismo valor:They may not return the same value:

  • PERCENTILE_CONT devuelve el valor adecuado, aunque no exista en el conjunto de datos.PERCENTILE_CONT returns the appropriate value, even if it doesn't exist in the data set.
  • PERCENTILE_DISC devuelve un valor real del conjunto.PERCENTILE_DISC returns an actual set value.
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

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 each department's median employee salary. Tenga en cuenta que puede que estas funciones no devuelvan el mismo valor:They may not return the same value:

  • PERCENTILE_CONT devuelve el valor adecuado, aunque no exista en el conjunto de datos.PERCENTILE_CONT returns the appropriate value, even if it doesn't exist in the data set.
  • PERCENTILE_DISC devuelve un valor real del conjunto.PERCENTILE_DISC returns an actual set value.
-- 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

Consulte tambiénSee Also

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