以下是我与之合作的查询:
SELECT (COUNT(`pass` = 0) / COUNT((`pass` = 0) + (`pass` = 1))) AS `PassRate` from `quiz_results`
我试图让一部分人通过测验,但问题是如果没有人通过测验,则会返回NULL
。我试图找出0
时如何返回NULL
。
我已尝试使用ISNULL
,但我没有运气。
我遇到的另一个问题是,如果没有人通过测验,则该值始终为零。所以我的两个问题如下:
COUNT(
通过=0)
返回0时返回100。不幸的是,我对SQL并不是那么好,而且我有点难过。我通过PHP访问MySQL。我在这里补充说,因为我不知道它是否会改变任何东西。
我使用安装了XAMPP的SQL(附带PhpMyAdmin)
答案 0 :(得分:1)
首先,您不想要COUNT()
,您想要SUM()
:
SELECT (SUM(`pass` = 0) / SUM((`pass` = 0) + (`pass` = 1))) AS `PassRate`
FROM `quiz_results`
表达式COUNT(pass = 0)
和COUNT(pass = 1)
始终将完全返回相同的数字,这相当于COUNT(pass)
。 COUNT()
只是在查看表达式是否为NULL
。
然后,您可以将其替换为AVG()
,可能是:
SELECT AVG(pass = 0) -- Should this be `pass = 1` ?
FROM quiz_results;
而且,如果您仍然收到不需要的NULL
值:
SELECT COALESCE(AVG(pass = 0), 0) -- Should this be `pass = 1` ?
FROM quiz_results;