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 2022 (16.x)
Azure SQL Database
AzureSQL Managed
Instance SQL Analytics endpoint em Microsoft Fabric
Warehouse em Microsoft Fabric
SQL database em Microsoft Fabric
Esta função retorna um valor interpolado aproximado do conjunto de valores em um grupo com base no valor do percentil e na especificação de classificação. Uma vez que esta é uma função aproximada, a saída estaria dentro do erro baseado em classificação vinculado com certa confiança. O valor do percentil retornado por esta função é baseado em uma distribuição contínua dos valores da coluna e o resultado seria interpolado. Devido a isso, a saída pode não ser um dos valores no conjunto de dados. Um dos casos de uso comuns para esta função é evitar os dados atípicos. Esta função pode ser usada como uma alternativa ao PERCENTILE_CONT para grandes conjuntos de dados onde um erro insignificante com resposta mais rápida é aceitável em comparação com o valor de percentil preciso com tempo de resposta lento.
Transact-SQL convenções de sintaxe
Sintaxe
APPROX_PERCENTILE_CONT (numeric_literal)
WITHIN GROUP (ORDER BY order_by_expression [ASC|DESC])
Argumento
numeric_literal
O percentil a calcular. O valor deve variar entre 0,0 e 1,0.
order_by_expression
Especifica uma lista de valores numéricos para classificar e calcular o percentil. Só é permitida uma order_by_expression . A ordem de classificação padrão é crescente (ASC). 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, numérico, bit, decimal, smallmoney e money. Os tipos numéricos aproximados são flutuantes e reais.
Tipos de devolução
flutuador(53)
Observações
Todos os nulos no conjunto de dados são ignorados.
As funções de percentil aproximado usam o esboço da KLL. O esboço é construído através da leitura do fluxo de dados. Devido ao algoritmo utilizado, esta função requer menos memória do que a sua contraparte não aproximada (PERCENTILE_CONT).
Esta função fornece garantias de erro baseadas em classificação e não baseadas em valor. A implementação da função garante um erro de até 1,33%.
Comportamentos conhecidos
- A saída da função pode não ser a mesma em todas as execuções. O algoritmo usado para estas funções é KLL sketch que é um algoritmo aleatório. Toda vez que o esboço é construído, valores aleatórios são escolhidos. Essas funções fornecem garantias de erro baseadas em classificação, não baseadas em valor.
- A implementação da função garante limites de erro de até 1,33% dentro de uma confiança de 99%.
Suporte de compatibilidade
No nível de compatibilidade 110 e superior, WITHIN GROUP é uma palavra-chave reservada. Para obter mais informações, consulte ALTER DATABASE Compatibility Level (Transact-SQL).
Exemplos
O exemplo a seguir cria uma tabela, preenche-a e executa uma consulta de exemplo.
SET NOCOUNT ON
GO
DROP TABLE IF EXISTS tblEmployee;
GO
CREATE TABLE tblEmployee (
EmplId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
DeptId INT,
Salary int);
GO
INSERT INTO tblEmployee
VALUES (1, 31),(1, 33), (1, 18), (2, 25),(2, 35),(2, 10), (2, 10),(3,
1), (3,NULL), (4,NULL), (4,NULL);
GO
SELECT DeptId,
APPROX_PERCENTILE_CONT(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_CONT(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId;