Compartilhar via


PERCENTILE_DISC (Transact-SQL)

Computa um percentil específico para obter valores classificados em um conjunto de linhas inteiro ou dentro de partições distintas de um conjunto de linhas no SQL Server. Para um determinado valor de percentil P, PERCENTILE_DISC classifica os valores da expressão na cláusula ORDER BY e retorna o valor com o menor valor de CUME_DIST (com respeito à mesma especificação de classificação) que é maior que ou igual a P. Por exemplo, PERCENTILE_DISC (0.5) computará os 50º percentil (isto é, o mediano) de uma expressão. PERCENTILE_DISC calcula o percentil baseado em uma distribuição discreta dos valores da coluna; o resultado é igual a um valor específico na coluna.

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

Ícone de vínculo de tópico convenções de sintaxe Transact-SQL (Transact-SQL)

Sintaxe

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

Argumentos

  • 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 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> não podem ser especificadas em uma função PERCENTILE_DISC.

Tipos de retorno

O tipo de retorno é determinado pelo tipo order_by_expression.

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_DISC é 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ásica

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