sql - 案例陈述和答案的除法始终为零

标签 sql case divide-by-zero nullif

我正在尝试划分案例陈述。我使用 nullif 来控制除以零的错误。然而,我的回答始终是 0。我不确定我做错了什么。以下是声明:

sum(CASE WHEN aw.goalmet LIKE 'yes' THEN 1 ELSE 0 end)/nullif(sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 else 0 end),0) AS 'Total Passing AIMSWEB2'

最佳答案

您可能正在使用执行整数除法的数据库(因此 1/2 = 0 而不是 0.5)。因此,只需使用非整数:

(sum(CASE WHEN aw.goalmet LIKE 'yes' THEN 1.0 ELSE 0 end) /
 nullif(sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 else 0 end), 0)
)

您可以将其简化为:

(sum(CASE WHEN aw.goalmet LIKE 'yes' THEN 1.0 ELSE 0 end) /
 sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 end)
)

如果没有任何内容与分母匹配,那么无论如何它都将为NULL

而且,如果你真的想要变得花哨和简单:

avg(case when aw.goalmet = 'yes' then 1.0
         when aw.goalmet = 'no'
    end) 

根本不需要除法。

关于sql - 案例陈述和答案的除法始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555898/

相关文章:

sql - 优化 : How to get TimeId from time for each minute in a week?

sql - 计算具有... SQL 的行数

class - 从抽象类继承的案例类

python - 识别和修复浮点除以零错误 (Python)

linear-programming - 线性规划 - 等于表达式符号的变量

mysql - 如何用符号id编写请求sql

mysql - 在 MySQL 中提取 JSON 提取的第一个键

sql-server - SQL Server : special calculation for value in a view

mysql - mysql 出错时的总和情况

c++ - 浮点除以零的行为