PERCENTILE_CONT (Transact-SQL)
Calcula um percentil baseado em uma distribuição contínua do valor da coluna em SQL Server 2012. O resultado é interpolado e talvez não seja igual a qualquer um dos valores específicos da coluna.
convenções de sintaxe Transact-SQL (Transact-SQL)
Sintaxe
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Argumentos
numeric_literal
O percentil a ser computado. O valor deve variar entre 0,0 e 1,0.WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
Especifica uma lista de valores numéricos sobre os quais classificar e computar o percentil. Apenas uma order_by_expression é permitida. A expressão deve avaliar a um tipo numérico exato (int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney, money) ou um tipo numérico aproximado (float, real). Outros tipos de dados não são permitidos. A ordem de classificação padrão é crescente.OVER ( <partition_by_clause> )
Divide o conjunto de resultados produzido pela cláusula FROM nas partições às quais a função de percentil é aplicada. Para obter mais informações, consulte Cláusula OVER (Transact-SQL). A <cláusula ORDER BY> e a <cláusula rows ou range> da sintaxe OVER não podem ser especificadas em uma função PERCENTILE_CONT.
Tipos de retorno
float(53)
Suporte de compatibilidade
Sob o nível de compatibilidade 110, WITHIN GROUP é uma palavra-chave reservada. Para obter mais informações, consulte Nível de compatibilidade de ALTER DATABASE (Transact-SQL).
Comentários gerais
Todos os nulos do conjunto de dados são ignorados.
Exemplos
A.Exemplo de sintaxe básico
O exemplo a seguir usa PERCENTILE_CONT e PERCENTILE_DISC para localizar o salário médio dos funcionários de cada departamento. Observe que essas funções podem não retornar o mesmo valor. Isso é porque PERCENTILE_CONT interpola o valor apropriado, quer ele exista ou não no conjunto de dados, enquanto PERCENTILE_DISC sempre retorna um valor real do 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;
Este é um conjunto de resultados parcial.
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