Compartilhar via


PERCENTILE_CONT (Transact-SQL)

Calcula um percentil baseado em uma distribuição contínua do valor da coluna em SQL Server. O resultado é interpolado e talvez não seja igual a qualquer um dos valores específicos da coluna.

Aplica-se a: SQL Server (SQL Server 2012 à versão atual).

Ícone de vínculo de tópico 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 e superior, 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.

PERCENTILE_CONT é não determinística. Para obter mais informações, consulte Funções determinísticas e não determinísticas.

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

Consulte também

Referência

PERCENTILE_DISC (Transact-SQL)