Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Se aplica a:Punto de conexión de SQL Analytics en Microsoft Fabric y Warehouse en Microsoft Fabric
La QUANTILE función devuelve un cuantil continuo exacto de valores noNULL numéricos. Puede usarlo como una función de agregado y una función de ventana (analítica):
- Uso agregado: Devuelve el cuantil solicitado para todo un grupo.
- Uso de ventanas: Devuelve el cuantil solicitado para cada partición mientras conserva la salida a nivel de fila.
Convenciones de sintaxis de Transact-SQL
Syntax
Sintaxis de función de agregación:
QUANTILE ( numeric_literal , numeric_expression )
Sintaxis de función analítica:
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumentos
numeric_literal
El cuantil a calcular. El valor debe estar en el rango inclusivo de 0.0 hasta 1.0. Por ejemplo, especifica 0.5 calcular la mediana o 0.95 calcular el percentil 95.
numeric_expression
La expresión numérica cuyo cuantil se calcula. Los tipos numéricos exactos soportados son int, bigint, smallint, tinyint, numeric, decimal, smallmoney, , y money. Los tipos numéricos aproximados soportados son float y real.
Cláusula OVER
El partition_by_clause divide el conjunto de resultados generado por la FROM cláusula en particiones y la función se aplica a cada partición.
Si no especificas partition_by_clause, la función trata todas las filas del conjunto de resultados de la consulta como una sola partición.
La OVER cláusula no soporta ORDER BY, ROWS, ni RANGE para QUANTILE.
Para obtener más información, vea CLÁUSULA SELECT - OVER (Transact-SQL).
Tipos de retorno
Devuelve float(53).
Remarks
QUANTILE calcula un cuantil continuo sobre los valores ordenados no deNULL entrada. Cuando el cuantil solicitado se sitúa entre dos valores, la función interpola entre ellos. El resultado puede no ser un valor que exista en las filas de entrada.
La forma agregada de QUANTILE(p, numeric_expression) es equivalente a PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression). La forma analítica tiene semántica equivalente en percentil continua dentro de cada partición.
Se omiten los valores NULL. Si todos los valores de entrada son NULL, o si ninguna fila califica, QUANTILE devuelve NULL. Cuando ANSI_WARNINGS es ON, eliminar NULL valores produce la advertencia agregada estándar.
Para los mismos valores noNULL de entrada y numeric_literal, QUANTILE devuelve el mismo resultado.
DISTINCT no es compatible. No se admiten expresiones de personaje, fecha, hora y hora de cita.
La QUANTILE función no está soportada en SQL Server, Azure SQL Database, Azure SQL Managed Instance ni SQL database en Fabric.
Caso de uso
Úsalo QUANTILE para calcular cuarteles, percentiles y otros límites exactos de distribución con sintaxis concisa. Por ejemplo, calcula los importes de reclamaciones de p90 por plan, la latencia de servicio de p95 por región, o valores de Q1, mediana y Q3 para una métrica de negocio.
Examples
R. Calcular cuantiles agregados
Este ejemplo calcula el primer cuartil, mediana, tercer cuartil y 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. Calcula un cuantil para cada grupo
Este ejemplo calcula el importe del percentil 90 de la reclamación para cada plan 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. Devolver NULL para un grupo totalmente NULL
Este ejemplo se devuelve NULL porque todos los valores que califican son 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. Calcular un cuantil de ventana particionada
Este ejemplo añade la latencia del percentil 95 para cada servicio a cada fila de solicitudes.
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;