这是我的桌子
ST NUM
1 1
1 2
1 2
2 1
2 2
2 2
3 2
3 8我想返回一个查询,其中返回每个ST的NUM的中位数
ST NUM
1 2
2 2
3 5我已经有了一个中值函数
SELECT
CONVERT(DECIMAL(10,2), (
(CONVERT (DECIMAL(10,2),
(SELECT MAX(num) FROM
(SELECT TOP 50 PERCENT num FROM dbo.t ORDER BY num ASC) AS H1)
+
(SELECT MIN(sortTime) FROM
(SELECT TOP 50 PERCENT num FROM dbo.t ORDER BY num DESC) AS H2)
))) / 2) AS Median如何做到这一点有什么建议吗?
发布于 2010-10-12 11:54:24
尝尝这个
With
MedianResult
as
(
Select
ST,NUM ,
Row_Number() OVER(Partition by ST Order by NUM) as A,
Row_Number() OVER(Partition by ST Order by NUM desc) as B
from **YourTableName**
)
Select ST, Avg(NUM) as Median
From MedianResult
Where Abs(A-B)<=1
Group by SThttps://stackoverflow.com/questions/3910852
复制相似问题