Share via


PERCENTILE_CONT (Transact-SQL)

Calcula un percentil basándose en una distribución continua de valores de columna en SQL Server 2012. El resultado se interpola y puede no ser igual que ninguno de los valores concretos de la columna.

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

Sintaxis

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

Argumentos

  • numeric_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. La expresión debe evaluarse como un tipo numérico exacto (int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney, money) o como un tipo numérico aproximado (float, real). No se permiten otros tipos de datos. 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> de la sintaxis de OVER no se pueden especificar en una función PERCENTILE_CONT.

Tipos de valor devuelto

float(53)

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_DISC (Transact-SQL)