Share via


PERCENTILE_DISC (Transact-SQL)

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 Server 2012. 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. 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.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL (Transact-SQL)

Sintaxis

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

Argumentos

  • literal
    El percentil que se va a calcular. El valor debe estar entre 0.0 y 1.0.

  • WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
    Especifica una lista de valores numéricos para ordenar y cuyo percentil se va a calcular. Solo se permite un parámetro order_by_expression. El criterio de ordenación predeterminado es ascendente.

  • 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. Para obtener más información, vea OVER (cláusula de Transact-SQL). <ORDER BY clause> y <rows or range clause> no se pueden especificar en una función PERCENTILE_DISC.

Tipos de valor devuelto

El tipo de valor devuelto viene determinado por el tipo de order_by_expression.

Soporte de compatibilidad

En el nivel de compatibilidad 110, WITHIN GROUP es una palabra clave reservada. Para obtener más información, vea Nivel de compatibilidad de ALTER DATABASE (Transact-SQL).

Comentarios generales

Se omite cualquier valor NULL del conjunto de datos.

Ejemplos

A.Ejemplo de sintaxis básica

En el ejemplo siguiente se usa PERCENTILE_CONT y PERCENTILE_DISC para buscar el salario medio de los empleados de cada departamento. Tenga en cuenta que estas funciones pueden no devolver el mismo valor. 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.

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.

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

Vea también

Referencia

PERCENTILE_CONT (Transact-SQL)