oracle - oracle sql中如何处理零除数
问题描述
我想使用 SQL 获取包含 ColumnA/ColumnB 的列中的平均值。
但是,SQL 需要忽略零。这意味着要求处理平均值,就好像零是 NULLS。如下:
请注意,当零替换为 NULL 时,平均值更高,如上述 excel 数据中,即 0.999342 而不是 0.70786694。
这是生成平均值的 SQL 查询:
SELECT StartTime, AVG(ColumnA/ColumnB)
FROM Table
where StartTime between '02-SEP-19 12:00:00.000000000 AM'
and '02-SEP-19 11:59:59.000000000 PM'
group StartTime
ORDER BY StartTime
我的问题是我可以使用什么值来替换 SQL 数据库中的零,以便 SQL 查询将得出平均值,就像使用 NULL 一样。
解决方案
你可以使用NULLIF
:
SELECT StartTime, AVG(ColumnA/NULLIF(ColumnB,0))
FROM Table
where StartTime between '02-SEP-19 12:00:00.000000000 AM'
and '02-SEP-19 11:59:59.000000000 PM'
group StartTime
ORDER BY StartTime