Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Ponto de extremidade de análise de SQL no Microsoft Fabric e Warehouse no Microsoft Fabric
A QUANTILE função retorna um quantil contínuo exato de valores nãoNULL numéricos. Você pode usá-la como uma função de agregação e uma função de janela (analítica):
- Uso agregado: Retorna o quantil solicitado para um grupo inteiro.
- Uso da janela: retorna o quantil solicitado para cada partição enquanto preserva a saída em nível de linha.
Convenções de sintaxe do Transact-SQL
Syntax
Sintaxe da função de agregação:
QUANTILE ( numeric_literal , numeric_expression )
Sintaxe de função analítica:
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumentos
numeric_literal
O quantil a ser calculado. O valor deve estar no intervalo inclusivo de 0.0 até 1.0. Por exemplo, especifique 0.5 para calcular a mediana ou 0.95 calcular o percentil 95.
numeric_expression
A expressão numérica cujo quantil é calculado. Tipos numéricos exatos suportados são int, bigint, smallint, tinyint, numeric, decimal, smallmoney, e money. Tipos numéricos aproximados suportados são float e real.
Cláusula OVER
O partition_by_clause divide o conjunto de resultados produzido pela FROM cláusula em partições e a função é aplicada a cada partição.
Se você não especificar partition_by_clause, a função trata todas as linhas do conjunto de resultados da consulta como uma única partição.
A OVER cláusula não suporta ORDER BY, ROWS, nem RANGE para QUANTILE.
Para obter mais informações, consulte SELECT – Cláusula OVER (Transact-SQL).
Tipos de retorno
Retorna float(53).
Observações
QUANTILE calcula um quantil contínuo sobre os valores ordenados que não sãoNULL de entrada. Quando o quantil solicitado fica entre dois valores, a função interpola entre eles. O resultado pode não ser um valor que exista nas linhas de entrada.
A forma agregada de QUANTILE(p, numeric_expression) é equivalente a PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression). A forma analítica possui semântica equivalente percentil-contínua dentro de cada partição.
NULL os valores são ignorados. Se todos os valores de entrada forem NULL, ou se nenhuma linha se qualificar, retorna QUANTILENULL. Quando ANSI_WARNINGS é ON, eliminar NULL valores produz o aviso agregado padrão.
Para os mesmos valores nãoNULL de entrada e numeric_literal, QUANTILE retorna o mesmo resultado.
Não há suporte para DISTINCT. Expressões de personagem, data, hora e data de data não são suportadas.
A QUANTILE função não é suportada no SQL Server, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure ou SQL Database no Fabric.
Caso de uso
Use QUANTILE para calcular quartis, percentis e outros limites exatos de distribuição com sintaxe concisa. Por exemplo, calcule valores de reivindicação p90 por plano, latência de serviço p95 por região, ou valores do primeiro trimestre, mediana e terceiro trimestre para uma métrica de negócio.
Examples
A. Calcule quantos agregados
Este exemplo calcula o primeiro quartil, mediana, terceiro quartil e percentil 95.
WITH Samples AS (
SELECT *
FROM (VALUES
(1), (NULL), (2), (3), (4), (5), (6), (7), (8), (13)
) AS v(value)
)
SELECT
QUANTILE(0.25, value) AS Q1_25thPercentile,
QUANTILE(0.50, value) AS Median_50thPercentile,
QUANTILE(0.75, value) AS Q3_75thPercentile,
QUANTILE(0.95, value) AS P95
FROM Samples;
B. Calcule um quantil para cada grupo
Este exemplo calcula o valor do 90º percentil de sinistros para cada plano de seguro.
WITH Claims AS (
SELECT *
FROM (VALUES
('Plan-A', 420.00),
('Plan-A', 500.00),
('Plan-A', 610.00),
('Plan-B', 250.00),
('Plan-B', 275.00),
('Plan-B', 310.00)
) AS v(plan_name, claim_amount)
)
SELECT
plan_name,
QUANTILE(0.90, claim_amount) AS P90ClaimAmount
FROM Claims
GROUP BY plan_name;
C. Devolva NULL para um grupo totalmente NULL
Este exemplo retorna NULL porque todos os valores qualificados são NULL.
WITH CampaignDiscounts AS (
SELECT *
FROM (VALUES
(9001, NULL),
(9001, NULL),
(9001, NULL),
(9002, 10.00)
) AS v(campaign_id, discount_percent)
)
SELECT QUANTILE(0.90, discount_percent) AS P90DiscountPercent
FROM CampaignDiscounts
WHERE campaign_id = 9001;
D. Calcule um quantil de janela particionada
Este exemplo adiciona a latência do 95º percentil para cada serviço a cada linha de requisição.
WITH ServiceLatency AS (
SELECT *
FROM (VALUES
('Checkout', 'req-001', 180),
('Checkout', 'req-002', 220),
('Checkout', 'req-003', 260),
('Search', 'req-010', 90),
('Search', 'req-011', 110),
('Search', 'req-012', 130)
) AS v(service, request_id, latency_ms)
)
SELECT
service,
request_id,
latency_ms,
QUANTILE(0.95, latency_ms) OVER (PARTITION BY service) AS ServiceP95Latency
FROM ServiceLatency;