繁体   English   中英

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

[英]MySQL - SELECT default value if null

这是我正在使用的查询:

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

我试图获得通过测验的人的百分比,但问题是如果没有人通过测验,则返回NULL 我试图弄清楚如何在NULL的情况下返回0

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

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

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

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

我正在使用随 XAMPP 一起安装的 SQL(PhpMyAdmin 附带)

首先,你不想要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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM