首页 > 解决方案 > 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 一样。

标签: oracle

解决方案


你可以使用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

推荐阅读