2015-06-22 107 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;