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)
Base de Dados SQL do Azure
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 mais informações, vejaALTER DATABASE Nível de Compatibilidade (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