我需要一个查询,该查询将对某些实体(学生)的集合(学生)中的(Absence.excuse)空值进行计数。

到目前为止,我设法创建了此查询:

SELECT s, SUM(CASE WHEN a.excuse IS NULL THEN 1 ELSE 0 END)
    FROM Student AS s
LEFT JOIN s.absences a
WHERE s.class = :class
GROUP BY s
ORDER BY s.ordinal


仅当学生在缺勤表中已经缺席(有或没有借口)时,该方法才有效。如果一个学生根本没有缺勤,它将为此返回1。但是我不知道那怎么可能。如果没有缺席,是否会将a.excuse评估为NULL?

谢谢你的帮助。

最佳答案

试试看

SELECT s, SUM(CASE WHEN (a.excuse IS NULL and a.id IS NOT NULL) THEN 1 ELSE 0 END)

10-04 09:55