SQL Server 下取中位数(中位值)的方法
上一篇 /
下一篇 2012-10-08 10:08:56
/ 个人分类:数据库
51Testing软件测试网y+i/wg3d_-oYp.` 中位数是指将数据按大小顺序排列起来,形成一个数列,居于数列中间位置的那个数据。中位数用Me表示。
x4ND~;^9^051Testing软件测试网2}5Xm4wT0WoG 从中位数的定义可知,所研究的数据中有一半小于中位数,一半大于中位数。中位数的作用与算术平均数相近,也是作为所研究数据的代表值。在一个等差数列或一个正态分布数列中,中位数就等于算术平均数。51Testing软件测试网nX]+D~
51Testing软件测试网 `&l.R\|V 在数列中出现了极端变量值的情况下,用中位数作为代表值要比用算术平均数更好,因为中位数不受极端变量值的影响;如果研究目的就是为了反映中间水平,当然也应该用中位数。在统计数据的处理和分析时,可结合使用中位数。51Testing软件测试网4A*^#PErRe+F.O
+bA"_DZ*W0 将数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2;当样本数为偶数时,中位数为N/2与1+N/2的均值 ,或求出中间两个数的平均数作为中位数。51Testing软件测试网/SW'I/_sS$N{1J
51Testing软件测试网;I.@Lu!W 在Excel中有函数MEDIAN来取中位数,但是在SQLServer中则没有该内置的函数,需要用以下方法求得。
NjmQN051Testing软件测试网,{ `|Z^3`create table #tb(pid varchar(10),coadcladcon int)
dZfS.{-{9np(v0insert into #tb
"dH[.ZD0 select 'PRAA0370',1 union all51Testing软件测试网A|:iB*}ac)}
select 'PRAA0370',2 union all51Testing软件测试网7g!^Ki
c IC
select 'PRAA0370',3 union all51Testing软件测试网+y
jOBRls
select 'PRAA0370',4 union all51Testing软件测试网6R(YsJh&Wwjq
select 'PRAA0370',5 union all
+iE
sW(_?'@0 select 'PRAA0370',6 union all
A w MAa)z
U0 select 'PRAA0371',1 union all51Testing软件测试网 Zm/F(v5} y
select 'PRAA0371',2 union all51Testing软件测试网zqGXo`5]s
select 'PRAA0371',3 union all
n-Nrh4@"H&Bs0 select 'PRAA0371',4 union all51Testing软件测试网*e!s&wF\?2~
select 'PRAA0371',5 union all51Testing软件测试网L&Tj d R['T
select 'PRAA0371',6 union all
_X\7x.Cxx0 select 'PRAA0371',751Testing软件测试网2O${#H[&n_
51Testing软件测试网#} A1X3l3w F(C
QWITH OrdersRN AS
p
]a"E:]u/\0(51Testing软件测试网 _)ir4}*k
SELECT pid, coadcladcon,51Testing软件测试网cF,QGf1v Li\fm@
ROW_NUMBER() OVER(PARTITION BY pid ORDER BY coadcladcon) AS RowNum,
,JZ"]o @+O'_W0 COUNT(*) OVER(PARTITION BY pid) AS Cnt
&mdeQ ~$U/x0 FROM #tb
3JP6wnl)w2F[0)
&`WK;^Mj!@7C#]"dl$_0select pid,avg(coadcladcon) coadcladcon from (
S?v1FFh0SELECT pid,coadcladcon,RowNum,Cnt51Testing软件测试网0b h|?)O$E9jPA
FROM OrdersRN o
W]'J#w_s
t \T0WHERE RowNum IN((Cnt + 1) / 2,(Cnt + 2) / 2)51Testing软件测试网a efT*i!X
)a
vsr2E)W$xoB0group by pid
j"L:y4P[So)A l0
收藏
举报
TAG: