如何让sql计数包含零的结果?

rmbxnbpk  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(353)

我在计算每个班的学生人数。这里的想法是在一所学校里有不同的科目,我想看看每个摄影课的数字。
enrolments用于将学生注册到一个班级中,因此计算每个班级中已确认注册的学生数将返回该班级中的学生数。
classnumber是类的唯一id,studentnumber对每个学生都是唯一的。
但是,我使用的count函数不会返回没有学生的类。有没有一个简单,或更好的方法来实现这一点?
下面是我要做的:

SELECT enrolment.classnumber, COUNT(studentnumber) AS "Students" FROM enrolment
JOIN class ON enrolment.classnumber=class.classnumber
WHERE enrolmentstatus='Confirmed'
AND classtype='Photography'
GROUP BY enrolment.classnumber

但它只返回以下内容:

CLASS NUMBER         Students
------------         --------
6                    5

而不是包括其他3个空的摄影课。有什么想法吗?

30byixjq

30byixjq1#

你想要一个 left join :

SELECT c.classnumber, COUNT(e.studentnumber) AS Students
FROM class c LEFT JOIN
     enrolment e
     ON e.classnumber = c.classnumber AND
        e.enrolmentstatus = 'Confirmed'
WHERE c.classtype = 'Photography'
GROUP BY c.classnumber;

这个想法是从 class 因为它定义了结果集中需要的所有行。然后使用 LEFT JOIN 引入匹配行。第二个表上的条件(如状态)需要在 ON 条款。

相关问题