如何在SQL Server 2008中查找行的中值 [英] How to find median value for a row in SQL server 2008

查看:116
本文介绍了如何在SQL Server 2008中查找行的中值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在sql server中连续找到中值。但我无法得到任何答案。以下查询我试过了。





选择
(选择演员表格(平均值)(TotAvg * 1.0)as decimal(6,2))from(values(convert(decimal(6,2),a)),(convert(decimal(6,2),b)),(convert(decimal(6,2)) ,c)),
(转换(十进制(6,2),d)),(转换(十进制(6,2),e)),
(转换(十进制)(6,2) ,f)),(转换(十进制(6,2),g)),(转换(十进制(6,2),h)),(转换(十进制(6,2),i)),
(转换(十进制(6,2),j)),(转换(十进制(6,2),k)),(转换(十进制(6,2),l)),(转换(十进制(6, 2),m)),
(转换(十进制(6,2),n)),(转换(十进制(6,2),o)),(转换(十进制(6,2),p) )),(转换(十进制(6,2),q)),
(转换(十进制(6,2),r)),(转换(十进制(6,2),s)),(转换(十进制(6,2),s)),(转换(十进制(6,2),u)))作为Totalavg(TotAvg))
作为中位数

来自temp





我尝试过:



选择
(从(值(转换(十进制(6,2),a))中选择强制转换(平均(TotAvg * 1.0)为十进制(6,2)),(转换(十进制) (6 ,2),b)),(转换(十进制(6,2),c)),
(转换(十进制(6,2),d)),(转换(十进制(6,2), e)),
(转换(十进制(6,2),f)),(转换(十进制(6,2),g)),(转换(十进制(6,2),h)), (转换(十进制(6,2),i)),
(转换(十进制(6,2),j)),(转换(十进制(6,2),k)),(转换(十进制) (6,2),l)),(转换(十进制(6,2),m)),
(转换(十进制(6,2),n)),(转换(十进制)(6,2) ),o)),(转换(十进制(6,2),p)),(转换(十进制(6,2),q)),
(转换(十进制(6,2),r) ),(转换(十进制(6,2),s)),(转换(十进制(6,2),s)),(转换(十进制(6,2),u)))作为Totalavg(TotAvg))
作为中位数

来自temp

解决方案

也许如果你没有两个 s 其中的值:

(转换(十进制(6,2),r)),(转换(十进制)(6 ,2),s)),(转换(十进制(6,2),s)),
^ ^

这可能会有帮助吗?


不是答案,而是额外的inf ormation ...



什么是最快的计算中位数的方法? - SQLPerformance.com [ ^

I'm trying to find the median value in a row in sql server. but i couldn't get it any answer. below query i'm tried.


select 
(select cast(Avg(TotAvg * 1.0 )as decimal(6,2)) from (values (convert(decimal(6,2), a)),(convert(decimal(6,2), b)),(convert(decimal(6,2), c)),
(convert(decimal(6,2), d)),(convert(decimal(6,2), e)),
(convert(decimal(6,2), f)),(convert(decimal(6,2), g)),(convert(decimal(6,2), h)),(convert(decimal(6,2), i)),
(convert(decimal(6,2), j)),(convert(decimal(6,2), k)),(convert(decimal(6,2), l)),(convert(decimal(6,2), m)),
(convert(decimal(6,2), n)),(convert(decimal(6,2), o)),(convert(decimal(6,2), p)),(convert(decimal(6,2), q)),
(convert(decimal(6,2), r)),(convert(decimal(6,2), s)),(convert(decimal(6,2), s)),(convert(decimal(6,2), u))) as Totalavg(TotAvg)) 
as Median

from temp



What I have tried:

select 
(select cast(Avg(TotAvg * 1.0 )as decimal(6,2)) from (values (convert(decimal(6,2), a)),(convert(decimal(6,2), b)),(convert(decimal(6,2), c)),
(convert(decimal(6,2), d)),(convert(decimal(6,2), e)),
(convert(decimal(6,2), f)),(convert(decimal(6,2), g)),(convert(decimal(6,2), h)),(convert(decimal(6,2), i)),
(convert(decimal(6,2), j)),(convert(decimal(6,2), k)),(convert(decimal(6,2), l)),(convert(decimal(6,2), m)),
(convert(decimal(6,2), n)),(convert(decimal(6,2), o)),(convert(decimal(6,2), p)),(convert(decimal(6,2), q)),
(convert(decimal(6,2), r)),(convert(decimal(6,2), s)),(convert(decimal(6,2), s)),(convert(decimal(6,2), u))) as Totalavg(TotAvg)) 
as Median

from temp

解决方案

Perhaps if you didn't have two s values in there:

(convert(decimal(6,2), r)),(convert(decimal(6,2), s)),(convert(decimal(6,2), s)),
                                                  ^                          ^

It might help?


Not an answer, but additional information...

What is the fastest way to calculate the median? - SQLPerformance.com[^]


这篇关于如何在SQL Server 2008中查找行的中值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆