APPROX_PERCENTILE_DISC (Transact-SQL)
Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzurePonto de extremidade de análises SQL no Microsoft FabricWarehouse no 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. Como essa é uma função aproximada, a saída estaria dentro do erro baseado em classificação associado a determinada confiança. Como esse percentil aproximado é baseado em uma distribuição discreta dos valores de coluna, o valor de saída seria igual a um dos valores específicos na coluna. Essa função pode ser usada como uma alternativa para PERCENTILE_DISC para grandes conjuntos de dados em que um erro insignificante com resposta mais rápida é aceitável em comparação com um valor de percentil preciso com tempo de resposta lento.
Convenções da sintaxe Transact-SQL
Sintaxe
APPROX_PERCENTILE_DISC (numeric_literal)
WITHIN GROUP (ORDER BY order_by_expression [ASC|DESC])
Argumento
numeric_literal
O percentil a ser computado. O valor deve variar entre 0,0 e 1,0. para calcular o 10º percentil, o valor passado seria 0,10.
order_by_expression
Especifica uma lista de valores sobre os quais classificar e calcular o percentil. A ordem de classificação padrão é crescente (ASC). São permitidos somente tipos de dados numéricos. A expressão deve avaliar para um tipo numérico exato ou aproximado com suporte; nenhum outro tipo de dados é permitido. Os tipos numéricos exatos com suporte são int, bigint, smallint, tinyint, bit, smallmoney e money. Os tipos numéricos aproximados com suporte são float e real. Não há suporte para os tipos de dados decimal e float.
Tipos de retorno
O tipo de retorno é determinado pelo tipo order_by_expression.
Comentários
Todos os nulos do conjunto de dados são ignorados.
Funções de percentil aproximado usam esboço KLL. O esboço é criado lendo o fluxo de dados.
Essa função fornece garantias de erro baseadas em classificação não baseadas em valor. A implementação da função garante uma taxa de erro de até 1,33% em 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 essas funções é o esboço KLL, que é um algoritmo randomizado. Sempre que o esboço é criado, são escolhidos valores aleatórios. Essas funções fornecem garantias de erro baseadas em classificação não baseadas em valor.
A implementação da função garante um limite de erro de até 1,33% em uma confiança de 99%.
Suporte de compatibilidade
Sob o nível de compatibilidade 110 e superior, WITHIN GROUP é uma palavra-chave reservada. Para obter mais informações, confira Nível de compatibilidade de ALTER DATABASE (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
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários