MySQL - 如果为null,则选择默认值

时间:2015-06-22 01:46:17

标签: php mysql

以下是我与之合作的查询:

SELECT (COUNT(`pass` = 0) / COUNT((`pass` = 0) + (`pass` = 1))) AS `PassRate` from `quiz_results`

我试图让一部分人通过测验,但问题是如果没有人通过测验,则会返回NULL。我试图找出0时如何返回NULL

我已尝试使用ISNULL,但我没有运气。

我遇到的另一个问题是,如果没有人通过测验,则该值始终为零。所以我的两个问题如下:

  • 将NULL转换为0。
  • COUNT(通过=0)返回0时返回100。

不幸的是,我对SQL并不是那么好,而且我有点难过。我通过PHP访问MySQL。我在这里补充说,因为我不知道它是否会改变任何东西。

我使用安装了XAMPP的SQL(附带PhpMyAdmin)

1 个答案:

答案 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;