0

我在弄清楚这个 SQL 语句时遇到了一些困难。

这是表的架构。

studentID |subjectID | attendanceStatus | classDate | 
1234567      ...           1               .....
1234567      ...           0 

基本上我想根据学生ID计算出勤率并将它们显示在这样的列中

studentID | subjectID | attendancePercentage

出勤率是该学生的 0 数/总条目数

这是我所做的,但没有给出预期的结果。

SELECT studentID, COUNT(attendanceStatus =  0) AS Absent,
COUNT( attendanceStatus = 1) As Present
FROM attendance WHERE studentID = '1234567';

那失败了。

我希望我能理解我想要实现的目标。

4

1 回答 1

1

我认为你需要使用 sum 来代替。

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' 
于 2012-05-11T02:27:16.273 回答