首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL Server中采用中位数计算

在SQL Server中采用中位数计算
EN

Stack Overflow用户
提问于 2010-10-13 01:48:09
回答 1查看 349关注 0票数 1

SQL Server中的MyTable包含_TimeStamp、Column1、Column2和Column3,它们具有下列值:

代码语言:javascript
复制
_TimeStamp Column1 Column2 Column3  
'2010-10-11 15:55:25.40' 10  3  0.5  
'2010-10-11 15:55:25.50' 20  9  0.7  
'2010-10-11 15:55:25.60' 15  2  1.3  
'2010-10-11 15:55:25.70' 17  8  2.7  
'2010-10-11 15:55:25.80' 42  6  3.6  
'2010-10-11 15:55:25.90' 14  2  0.4  

我想找出4*Column1*Column2*Column3的median值。每行的产品包括:

代码语言:javascript
复制
        60
代码语言:javascript
复制
       504
代码语言:javascript
复制
       156
代码语言:javascript
复制
    1468.8
代码语言:javascript
复制
    3628.8
代码语言:javascript
复制
      44.8

由于有偶数个条目,因此中间值是两个“中间”条目(156和504)的平均值,即330。此外,我只想对落入所选时间范围内的值执行中位数,并且解决方案不能更改不属于我的数据库。我编辑了一个similar query以获得如下所示的查询,但它失败了,因为列名无效。有什么建议吗?

代码语言:javascript
复制
SELECT
  AVG(4*Column1*Column2*Column3)
  FROM 
(
  SELECT
    4*Column1*Column2*Column3,
    ROW_NUMBER() OVER (
    ORDER BY 4*Column1*Column2*Column3 ASC, _TimeStamp ASC) AS RowAsc,
    ROW_NUMBER() OVER (
    ORDER BY 4*Column1*Column2*Column3 DESC, _TimeStamp DESC) AS RowDesc
  FROM MyTable WHERE 
   _TimeStamp BETWEEN '2010-10-11 15:55:25.40' AND '2010-10-11 15:55:25.90' 

) x
WHERE 
  RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-13 01:55:37

我认为您需要对候选语句执行的所有操作就是在子查询中为计算值设置别名,然后在外部查询中请求该别名的AVG

代码语言:javascript
复制
SELECT
  AVG(MyValue)
  FROM 
(
  SELECT
    4*Column1*Column2*Column3 AS MyValue,
    ROW_NUMBER() OVER (
    ORDER BY 4*Column1*Column2*Column3 ASC, _TimeStamp ASC) AS RowAsc,
    ROW_NUMBER() OVER (
    ORDER BY 4*Column1*Column2*Column3 DESC, _TimeStamp DESC) AS RowDesc
  FROM MyTable WHERE 
   _TimeStamp BETWEEN '2010-10-11 15:55:25.40' AND '2010-10-11 15:55:25.90' 

) x
WHERE 
  RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)

不过,我还没有测试过这个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3917518

复制
相关文章

相似问题

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