【sql: 练习题4】查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总
题目:查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和
分析:看到总数 应该是要用count(course) ,成绩总和 应该是sum(score) 这些聚合函数,因为要知道每个人的 因此要以人分组 group by studentid
因为要知道学生的详细信息,因此要join on student 表
写出来的sql:
SELECT a.id,a.stdentname, b, c FROM student a JOIN
(SELECT studentid,COUNT(courseid)AS b,SUM(score) AS c FROM student_score GROUP BY studentid)d
ON a.id = d.studentid;
查询的结果:
改进: 把没有选课和没有课程成绩的学生也显示出来,就要用到 left join 了