APPROX_PERCENTILE_DISC (Transact-SQL)

Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse 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