主题:如何对多列数据求平均?
everroc
[专家分:0] 发布于 2008-12-08 18:06:00
如果要同时对以下4列求平均,其中无效值用32744表示,该如何剔除无效值呢?
1001 6436 5153 32744
2005 6747 4656 32744
3045 32744 5777 7487
5565 6457 32744 2342
我用avg函数可以对每列单独求平均,但是同时求平均就不行了,这是为何啊?
回复列表 (共1个回复)
沙发
linjipeng0 [专家分:220] 发布于 2009-01-16 15:07:00
declare @t table(a int,b int,c int,d int)
insert into @t
select 1001,6436,5153,32744
union all
select 2005,6747,4656,32744
union all
select 3045,32744,5777,7487
union all
select 5565,6457,32744,2342
select
avg(case when a=32744 then 0 else a end
+case when b=32744 then 0 else b end
+case when c=32744 then 0 else c end
+case when d=32744 then 0 else d end)
/
sum(case when a=32744 then 0 else 1 end
+case when b=32744 then 0 else 1 end
+case when c=32744 then 0 else 1 end
+case when d=32744 then 0 else 1 end)
as [avg(a+b+c+d)]
from @t
我来回复