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