首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server 2000中的Median

SQL Server 2000中的Median
EN

Stack Overflow用户
提问于 2011-09-05 23:57:33
回答 2查看 799关注 0票数 1

对于偶数行,下表中位数的公式为(104.5 + 108)/2,对于奇数行,下表中位数的公式为108

代码语言:javascript
复制
Total       Total

100         100
101         101
104.5       104.5
108         108
108.3       108.3
112         112
            114

下面的代码可以在SQL Server2008中运行,但不能在SQL Server2000中运行,因为它不理解row_number()over

我们如何更改下面的代码以使其在SQL Server 2000上工作?

代码语言:javascript
复制
select avg(Total) median from
(select Total, 
rnasc = row_number() over(order by Total),
rndesc = row_number() over(order by Total desc)
 from [Table] 
) b
where rnasc between rndesc - 1 and rndesc + 1
EN

回答 2

Stack Overflow用户

发布于 2011-09-06 00:10:45

如果你只想要一个中位数,你可以使用这个简单的查询。

代码语言:javascript
复制
SELECT
(
  (SELECT MAX(Total) FROM
    (SELECT TOP 50 PERCENT Total FROM [Table] ORDER BY Total) AS BottomHalf)
  +
  (SELECT MIN(Total) FROM
    (SELECT TOP 50 PERCENT Total FROM [Table] ORDER BY Total DESC) AS TopHalf)
) / 2.0 AS Median

来源:Function to Calculate Median in Sql Server

票数 3
EN

Stack Overflow用户

发布于 2011-09-06 00:08:24

代码语言:javascript
复制
SELECT Median = AVG(Total) FROM 
( 
    SELECT Total FROM ( 
        SELECT TOP 1 Total = Total * 1.0 FROM 
        ( 
            SELECT TOP 50 PERCENT Total 
            FROM dbo.[Table] ORDER BY Total 
        ) AS sub_a 
        ORDER BY 1 DESC 
    ) AS sub_1 
    UNION ALL 
    SELECT Total FROM ( 
        SELECT TOP 1 Total = Total * 1.0 FROM 
        ( 
            SELECT TOP 50 PERCENT Total 
            FROM dbo.[Table] ORDER BY Total DESC 
        ) AS sub_b 
        ORDER BY 1 
    ) AS sub_2 
) AS median;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7310335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档