Mostrar el valor de la mediana de una tabla dinámica [duplicado]
Frecuentes
Visto 97 veces
0
Posible duplicado:
Función para calcular la mediana en Sql Server
Meta:
Muestre el valor de la mediana basado en este código a continuación.
Problema:
No sé cómo mostrarlo en el servidor SQL
La tabla puede recuperar un nuevo valor en el futuro y todas las filas pueden ser pares o impares.
declare @T table
(
Name varchar(50),
Sales int
)
insert into @T values
('John', '50'),
('Jennifer', '15'),
('Stella', '20'),
('Sophia', '40'),
('Greg', '10'),
('Jeff', '20')
1 Respuestas
0
Esto debería funcionar:
SELECT AVG(tt.Sales) AS Median
FROM (
SELECT TOP 1 t1.* FROM
(SELECT TOP 50 PERCENT FROM @T ORDER BY Sales) t1
ORDER BY t1.Sales DESC
UNION
SELECT TOP 1 t2.* FROM
(SELECT TOP 50 PERCENT FROM @T ORDER BY Sales DESC) t2
ORDER BY t2.Sales
) tt
Para mostrarlo, puedes hacer
DECLARE @Median REAL
SELECT @Median=AVG(tt.Sales) AS Median
FROM (
SELECT TOP 1 t1.* FROM
(SELECT TOP 50 PERCENT FROM @T ORDER BY Sales) t1
ORDER BY t1.Sales DESC
UNION
SELECT TOP 1 t2.* FROM
(SELECT TOP 50 PERCENT FROM @T ORDER BY Sales DESC) t2
ORDER BY t2.Sales
) tt
PRINT CONVERT(VARCHAR, @Median)
respondido 09 mar '12, 16:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql sql-server or haz tu propia pregunta.
No use VARCHAR sin especificar la longitud. sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/… - Aarón Bertrand