2015-06-22 113 views
-1

这里是我的查询我的工作:MySQL的 - 选择默认值,如果空

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

当我试图让谁已通过测验的人的百分比,但是问题是,如果没有人通过测验,然后返回NULL。我想知道如何在NULL的情况下返回0

我试过使用ISNULL但是我没有任何运气。

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

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

不幸的是,我不是所有与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;