基于经典问题:老师学生成绩表
1、查询成绩比该课程平均成绩低的同学的成绩表
子查询说明:select后面group by 分组的字段(例如 s.con )不需要加函数,此外其他字段都需要加上函数(例如 AVG里面的s.degree字段)
SELECT s.cno, AVG( s.degree ) AS avg FROM scores s GROUP BY s.cno
分组前:
分组后:
结合子查询全部的执行的结果:
#要查询的字段:同学sname,成绩degree
SELECT
stu.sname,
cc.cname,
s.degree
FROM
scores s
LEFT JOIN students stu ON s.sno = stu.sno
LEFT JOIN ( SELECT s.cno, AVG( s.degree ) AS avg FROM scores s GROUP BY s.cno ) ss ON s.cno = ss.cno
left join courses cc on cc.cno = s.cno
WHERE
s.degree < ss.avg
执行结果