mysql - IF 条件中 NULL 的计数

标签 mysql sql count group-by sum

我有这个查询:

    SELECT 

    SUM(IF(b.correct = 1,1,0)) correct_answers,
    SUM(IF(b.correct != 1,1,0)) incorrect_answers,
    SUM(IF(a.answer IS NULL) 1,0)) as no_answers,
    a.ID
    FROM `a` join b on a.answer  = b.id 
    where a.created_at between '2014-06-10' and '2014-06-17' 
    group by a.ID order by correct_answers desc

基本上,我试图获取每个用户的测验的正确答案、错误答案和无答案的数量。所以我得到了正确和错误的计数。但是,当我尝试计算没有答案的数量(表 a 中答案列为 NULL)时,我得到的全是零。这个查询有什么问题吗?

最佳答案

试试这个:

SELECT SUM(b.correct = 1) correct_answers,
       SUM(b.correct != 1) incorrect_answers,
       SUM(a.answer IS NULL) AS no_answers,
       a.ID
FROM a 
LEFT JOIN b ON a.answer = b.id 
WHERE a.created_at BETWEEN '2014-06-10' AND '2014-06-17' 
GROUP BY a.ID 
ORDER BY SUM(b.correct = 1) DESC;

关于mysql - IF 条件中 NULL 的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24262471/

相关文章:

sql - Oracle SQL Select 中的行数?

mysql - SQL:计算一个字段的值

mysql - 如何更新时间戳列将日期向前移动

PHP - PDO 从 _post 变量中选择语句

php - 从数据库中获取信息而无需注销并重新登录

sql - Coldfusion - 查询不区分大小写的数据库

java - Java 中的秒数计算

php - laravel 5.4 中如何匹配两个表并将其插入到另一个表中?

php - Kohana v3,自动转义非法字符?

mysql - 在 SQL 内连接中使用别名