我已经有代码显示未通过课程的学生,但我也希望显示学生失败的课程数量。
这是我目前的代码:
SELECT s.studentid, s.name
FROM student s
INNER JOIN notes ON s.studentid = notes.studentid
WHERE notes.note < "50"
ORDER BY student.name
我有三张桌子。
学生:
| studentid | name |
注释:
| studentid | note | courseid |
和当然:
| courseid |
答案 0 :(得分:0)
使用汇总功能 Count()
SELECT s.studentid, s.name,notes.courseid ,count(1) CNT
FROM student s
INNER JOIN notes ON s.studentid = notes.studentid
WHERE (notes.note) < "50"
group by s.studentid, s.name, notes.courseid
ORDER BY student.name
答案 1 :(得分:0)
我知道这已经有了答案,但我想提供一个不同的观点:
由于您在notes表中有studentid和courseid,因此您可以从该表中获取所需的所有内容:
SELECT studentid, COUNT(*) AS numFailedCourses
FROM notes
WHERE note < 50
GROUP BY studentid
这将选择Notes表中具有失败成绩的所有行,并按学生ID进行分组。但是,如果你确实需要学生姓名,你仍然需要加入学生表,这与已经给出的答案相同:
SELECT s.studentid, s.name, COUNT(*) AS numFailedCourses
FROM notes n
JOIN students s ON s.studentid = n.studentid
WHERE n.note < 50
GROUP BY s.studentid
ORDER BY s.name