Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Depósito no Microsoft Fabric
Banco de dados SQL no Microsoft Fabric
Calcula um percentil com base em uma distribuição contínua do valor da coluna no Mecanismo de Banco de Dados do SQL Server. O resultado é interpolado e pode não ser igual a nenhum dos valores específicos na coluna.
Convenções de sintaxe de 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.
DENTRO DO GRUPO ( ORDENAR POR order_by_expression )
Especifica uma lista de valores numéricos sobre os quais classificar e computar o percentil. Apenas uma order_by_expression é permitida. A expressão precisa avaliar a um tipo numérico exato ou aproximado, nenhum outro tipo de dados sendo permitido. Os tipos numéricos exatos são: int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney e money. Os tipos numéricos aproximados são float e real. A ordem de classificação padrão é crescente.
SOBRE ( <partition_by_clause> )
Divide o conjunto de resultados produzido pela FROM cláusula em partições às quais a função de percentil é aplicada. Para obter mais informações, consulte Cláusula SELECT - OVER. A ORDER BY cláusula e a <rows or range clause> sintaxe OVER não podem ser especificadas em uma PERCENTILE_CONT função.
Tipos de retorno
float(53)
Suporte de compatibilidade
WITHIN GROUP é uma palavra-chave reservada, começando com o nível de 110compatibilidade . Para saber mais, confira ALTER DATABASE Compatibility Level.
Comentários
Todos os nulos do conjunto de dados são ignorados.
PERCENTILE_CONT é não determinístico. Para obter mais informações, veja Funções determinísticas e não determinísticas.
Exemplos
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
R. Encontre o salário médio do funcionário por departamento
O exemplo a seguir usa PERCENTILE_CONT e PERCENTILE_DISC para localizar o salário médio do funcionário em cada departamento. Essas funções podem não retornar o mesmo valor.
PERCENTILE_CONT Interpola o valor apropriado, que pode ou não existir no conjunto de dados, enquanto PERCENTILE_DISC sempre retorna um valor real do conjunto.
USE AdventureWorks2022;
GO
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
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
O exemplo a seguir usa o AdventureWorksDW2012 banco de dados de exemplo.
B. Encontre o salário médio do funcionário por departamento
O exemplo a seguir usa PERCENTILE_CONT e PERCENTILE_DISC para localizar o salário médio do funcionário em cada departamento. Essas funções podem não retornar o mesmo valor.
PERCENTILE_CONT Interpola o valor apropriado, que pode ou não existir no conjunto de dados, enquanto PERCENTILE_DISC sempre retorna um valor real do conjunto.
SELECT DISTINCT DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
Este é um conjunto de resultados parcial.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000