我想计算一列数字的平均值,但我想排除该列中有零的行,这有可能吗? 我的代码只是一个简单的总和/计数:
SELECT SUM(Column1)/Count(Column1) AS Average
FROM Table1
答案 0 :(得分:10)
SELECT AVG(Column1) FROM Table1 WHERE Column1 <> 0
答案 1 :(得分:2)
一种方法是AVG()
和CASE
/ NULLIF()
:
SELECT AVG(NULLIF(Column1, 0)) as Average
FROM table1;
平均值忽略NULL
个值。这假定您需要其他聚合;否则,显而易见的选择是过滤。
答案 2 :(得分:-1)
多条道路通往罗马......
select sum(Column1) / sum( case Column1
case 0 then 0 else 1
end )
from table1
答案 3 :(得分:-1)
SELECT AVG(column) FROM TABLE
where column **not like** '0%'