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 o valor do conjunto de valores em um grupo com base no percentil fornecido 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. Como esse percentil aproximado é baseado em uma distribuição discreta dos valores da coluna, o valor de saída seria igual a um dos valores específicos na coluna. Esta função pode ser usada como uma alternativa ao PERCENTILE_DISC 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_DISC (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. Para calcular o percentil 10, o valor passado seria 0,10.
order_by_expression
Especifica uma lista de valores para classificar e calcular o percentil. A ordem de classificação padrão é crescente (ASC). Apenas tipos de dados numéricos são permitidos. A expressão deve ser avaliada para um tipo numérico exato ou aproximado suportado, sem outros tipos de dados permitidos. Os tipos numéricos exatos suportados são int, bigint, smallint, tinyint, bit, smallmoney e money. Os tipos numéricos aproximados suportados são flutuantes e reais. Não há suporte para tipos de dados decimais e flutuantes.
Tipos de devolução
O tipo de retorno é determinado pelo tipo order_by_expression .
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.
Esta função fornece garantias de erro baseadas em classificação e não baseadas em valor. A implementação da função garante uma taxa de erro de até 1,33% dentro de uma probabilidade de 99%.
Comportamentos conhecidos
A saída das funções 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 a 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_DISC(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_DISC(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId