我在弄清楚这个SQL语句时遇到了一些困难。
这是表的架构。
studentID |subjectID | attendanceStatus | classDate |
1234567 ... 1 .....
1234567 ... 0
基本上我想根据studentID计算出勤率,并将其显示在这样的列中
studentID | subjectID | attendancePercentage
出勤率百分比是该学生的0 /总参赛人数
这是我所做的,并没有给出预期的结果。
SELECT studentID, COUNT(attendanceStatus = 0) AS Absent,
COUNT( attendanceStatus = 1) As Present
FROM attendance WHERE studentID = '1234567';
失败了。
我希望我能理解我想要实现的目标。
答案 0 :(得分:1)
我认为你需要使用总和。
SELECT studentID ,
SUM(CASE WHEN attendanceStatus = 0 THEN 1
ELSE 0
END) AS Absent ,
SUM(CASE WHEN attendanceStatus = 1 THEN 1
ELSE 0
END) AS Present
FROM attendance
WHERE studentID = '1234567'