2015-06-22 2 views
-1

Вот мой запрос, что я работаю с:MySQL - ВЫБРАТЬ значение по умолчанию, если нуль

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

Где я пытаюсь получить процент людей, прошедших тесты, однако проблема в том, что если никто, как прошел тест, затем возвращается NULL. Я пытаюсь выяснить, как вернуть 0 в случае NULL.

Я пробовал использовать ISNULL, но мне не повезло.

Другая проблема, с которой я сталкиваюсь, заключается в том, что если никто не провалил викторину, значение всегда равно нулю. Таким образом, две мои проблемы заключаются в следующем:

  • Преобразовать NULL 0.
  • Возврат 100 когда COUNT( передача =0) возвращает 0.

К сожалению, я не все, что большой с SQL и я м немного тупик. Я обращаюсь к MySQL через PHP. Я добавил, что здесь, потому что я не знаю, изменит ли он что-нибудь.

Я использую SQL установлен с XAMPP (Поставляется с 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;