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过滤掉吧