Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Calcula um percentil com base numa distribuição contínua do valor da coluna no Motor de Base de Dados SQL Server. O resultado é interpolado e pode não ser igual a nenhum dos valores específicos da coluna.
Transact-SQL convenções de sintaxe
Sintaxe
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
O percentil a calcular. O valor deve variar entre 0.0 e 1.0.
DENTRO DO GRUPO ( ORDEM POR order_by_expression )
Especifica uma lista de valores numéricos para classificar e calcular o percentil. Só é permitida uma order_by_expression . A expressão deve ser avaliada para um tipo numérico exato ou aproximado, sem outros tipos de dados permitidos. Os tipos numéricos exatos são int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney e money. Os tipos numéricos aproximados são flutuante e real. A ordem de classificação padrão é crescente.
MAIS ( <partition_by_clause> )
Divide o conjunto de resultados produzido pela FROM cláusula em partições às quais a função percentil é aplicada. Para mais informações, consulte a Cláusula SELECT - OVER. A ORDER BY cláusula e <rows or range clause> da OVER sintaxe não pode ser especificada numa PERCENTILE_CONT função.
Tipos de devolução
Flutuar (53)
Suporte de compatibilidade
WITHIN GROUP é uma palavra-chave reservada, começando pelo nível 110de compatibilidade . Para mais informações, consulte Nível de Compatibilidade ALTER DATABASE.
Observações
Todos os nulos no conjunto de dados são ignorados.
PERCENTILE_CONT é não determinística. Para mais informações, consulte Funções Determinísticas e Não Determinísticas.
Examples
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.
A. Encontre o salário mediano dos funcionários por departamento
O exemplo seguinte utiliza PERCENTILE_CONT e PERCENTILE_DISC para encontrar o salário mediano dos funcionários em cada departamento. Estas funções podem não devolver o mesmo valor.
PERCENTILE_CONT interpola o valor apropriado, que pode ou não existir no conjunto de dados, enquanto PERCENTILE_DISC retorna sempre 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;
Aqui está um conjunto de resultados parciais.
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 and Analytics Platform System (PDW)
O exemplo seguinte utiliza a base de AdventureWorksDW2012 dados de exemplo.
B. Encontre o salário mediano dos funcionários por departamento
O exemplo seguinte utiliza PERCENTILE_CONT e PERCENTILE_DISC para encontrar o salário mediano dos funcionários em cada departamento. Estas funções podem não devolver o mesmo valor.
PERCENTILE_CONT interpola o valor apropriado, que pode ou não existir no conjunto de dados, enquanto PERCENTILE_DISC retorna sempre 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;
Aqui está um conjunto de resultados parciais.
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