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:Endpoint de análise SQL no Microsoft Fabric e Warehouse no Microsoft Fabric
A APPROX_MEDIAN função devolve uma mediana aproximada, ou percentil 50, de valores nãoNULL numéricos. Pode usá-lo tanto como função agregada como função janela (analítica):
- Utilização agregada: Devolve uma mediana aproximada para um grupo inteiro.
- Utilização da janela: Devolve uma mediana aproximada para cada partição, preservando a saída ao nível das linhas.
Transact-SQL convenções de sintaxe
Syntax
Sintaxe da função de agregação:
APPROX_MEDIAN ( numeric_expression )
Sintaxe da função analítica:
APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_expression
A expressão numérica cuja mediana aproximada é calculada. Os tipos numéricos exatos suportados são int, bigint, smallint, tinyint, numeric, decimal, smallmoney, , e money. Os 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 não especificares 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 APPROX_MEDIAN.
Para mais informações, consulte a cláusula SELECT - OVER (Transact-SQL).
Tipos de devolução
Retorna float(53).
Remarks
APPROX_MEDIAN estima o percentil contínuo 50 dos valores ordenados não deNULL entrada. Use MEDIANA quando precisar de um resultado exato.
Os resultados aproximados podem diferir ligeiramente dos resultados exatos MEDIAN e variar entre execuções devido a planos de execução e caminhos de fusão paralelos.
APPROX_MEDIAN é não determinística. Para obter mais informações, consulte Funções determinísticas e não determinísticas.
NULL os valores são ignorados. Se todos os valores de entrada forem NULL, ou se nenhuma linha qualificar, APPROX_MEDIAN retorna NULL. Quando ANSI_WARNINGS é ON, eliminar NULL valores produz o aviso agregado padrão.
APPROX_MEDIAN destina-se a reduzir a latência e o uso de memória em comparação com cálculos exatos MEDIAN em grandes conjuntos de dados.
DISTINCT não é suportado. Expressões de personagem, data, hora e data-hora não são suportadas.
A APPROX_MEDIAN função está disponível no Fabric Data Warehouse e no endpoint de análise SQL de Fabric itens. A APPROX_MEDIAN função não é suportada no SQL Server, Base de Dados SQL do Azure, Azure SQL Managed Instance ou base de dados SQL no Fabric.
Caso de uso
Use APPROX_MEDIAN para painéis de controlo em grande escala, análises exploratórias e relatórios agrupados onde uma estimativa próxima é suficiente e o desempenho das consultas importa mais do que uma mediana exata. Exemplos comuns incluem o valor aproximado da ordem mediana, a latência do serviço e as medições de telemetria.
Examples
A. Calcule uma mediana aproximada agregada
Este exemplo estima a mediana de oito valores.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
O resultado é próximo da mediana exata de 4.5, mas pode variar ligeiramente.
B. Calcule uma mediana aproximada para cada grupo
Este exemplo estima o valor mediano das encomendas para cada região de vendas.
WITH SalesOrders AS (
SELECT *
FROM (VALUES
('North', 120.00),
('North', 220.00),
('North', 320.00),
('South', 150.00),
('South', 250.00),
('South', 450.00)
) AS v(region, order_amount)
)
SELECT
region,
APPROX_MEDIAN(order_amount) AS ApproxMedianOrderAmount
FROM SalesOrders
GROUP BY region;
C. Ignorar os valores NULL
Este exemplo ignora NULL os valores ao estimar a mediana.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Se cada valor de entrada for NULL, a função devolve NULL.
D. Calcule uma mediana aproximada de uma janela particionada
Este exemplo adiciona a latência mediana aproximada de cada serviço a cada linha de pedidos.
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,
APPROX_MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceApproxMedianLatency
FROM ServiceLatency;