Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:Punto de conexión de SQL Analytics en Microsoft Fabric y Warehouse en Microsoft Fabric
La APPROX_MEDIAN función devuelve una mediana aproximada, o percentil 50, de valores noNULL numéricos. Puede usarlo como una función de agregado y una función de ventana (analítica):
- Uso agregado: Devuelve una mediana aproximada para todo un grupo.
- Uso de ventanas: Devuelve una mediana aproximada 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:
APPROX_MEDIAN ( numeric_expression )
Sintaxis de función analítica:
APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumentos
numeric_expression
La expresión numérica cuya mediana aproximada 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 APPROX_MEDIAN.
Para obtener más información, vea CLÁUSULA SELECT - OVER (Transact-SQL).
Tipos de retorno
Devuelve float(53).
Remarks
APPROX_MEDIAN estima el percentil 50 continuo de los valores ordenados no deNULL entrada. Usa MEDIANA cuando necesites un resultado exacto.
Los resultados aproximados pueden diferir ligeramente de los resultados exactos MEDIAN y variar entre ejecuciones debido a los planes de ejecución y las rutas de fusión paralelas.
APPROX_MEDIAN sea no determinista. Para más información, vea Funciones deterministas y no deterministas.
Se omiten los valores NULL. Si todos los valores de entrada son NULL, o si ninguna fila califica, APPROX_MEDIAN devuelve NULL. Cuando ANSI_WARNINGS es ON, eliminar NULL valores produce la advertencia agregada estándar.
APPROX_MEDIAN está destinado a reducir la latencia y el uso de memoria en comparación con cálculos exactos MEDIAN en grandes conjuntos de datos.
DISTINCT no es compatible. No se admiten expresiones de personaje, fecha, hora y hora de cita.
La APPROX_MEDIAN función está disponible en Fabric Data Warehouse y en el endpoint de analítica SQL de Fabric elementos. La APPROX_MEDIAN función no está soportada en SQL Server, Azure SQL Database, Azure SQL Managed Instance ni SQL database en Fabric.
Caso de uso
Úsalo APPROX_MEDIAN para paneles de control a gran escala, análisis exploratorios e informes agrupados donde una estimación cercana es suficiente y el rendimiento de las consultas importa más que una mediana exacta. Ejemplos comunes incluyen el valor medio aproximado del orden, la latencia del servicio y las mediciones de telemetría.
Examples
R. Calcular una mediana aproximada agregada
Este ejemplo estima la mediana de ocho valores.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
El resultado es cercano a la mediana exacta de 4.5, pero puede variar ligeramente.
B. Calcula una mediana aproximada para cada grupo
Este ejemplo estima la cantidad mediana de pedidos para cada región de ventas.
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 los valores NULL
Este ejemplo ignora NULL los valores al estimar la mediana.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Si cada valor de entrada es NULL, la función devuelve NULL.
D. Calcula una mediana aproximada de una ventana particionada
Este ejemplo añade la latencia mediana aproximada de cada servicio a cada fila de petición.
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;