日期:2014-05-17  浏览次数:20820 次

avg求平均值
数据库中有五行数据
分别是:

1
2
3
0
0
如何只针对非零求平均数

------解决方案--------------------
avg(isnull(字段,0))
------解决方案--------------------

create table tb1
(id int)
insert into tb1 values(1),(2),(3),(0),(0)

select cast(AVG(id)as decimal(18,2)) from tb1 where id<>0

------解决方案--------------------

select avg([字段]) from [表名] where [字段]<>0

------解决方案--------------------
如果没有负值的话,直接avg就行 
------解决方案--------------------
WHERE 字段 <> 0
------解决方案--------------------
仅仅针对这个例子的话,直接AVG即可,如果有负数,那就要在where中先过滤。0不影响你的平均值,但是如果你是要算别的列的其他值,那这个0会有影响
------解决方案--------------------

select avg(num) from t6 where num<>0

------解决方案--------------------
把0过滤掉吧