MySQL数据库练习-2

查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩


分析:看到这道题的时候,刚开始考虑的是有的同学有三门成绩,有的同学有两门成绩,我是应该所有同学都总分除以三,还是总分除以各自科目数?所以这里这道题也有点不严谨,我这里选择第二种情况(因为第一种貌似比第二种麻烦,懒癌发作).我们可以查询sc表中平均成绩大于等于60的同学的SId,然后和算出来的AVG组成一张表r,然后和表Student联合查询


查询成立表r,这里记得要给查询的结果一个别名ss

select SId, AVG(score) AS ss from sc
GROUP BY SId
HAVING AVG(score)> 60;

结果:

+------+----------+
| SId  | ss       |
+------+----------+
| 01   | 89.66667 |
| 02   | 70.00000 |
| 03   | 80.00000 |
| 05   | 81.50000 |
| 07   | 93.50000 |
+------+----------+

对表Student和r进行联合查询

select student.SId,sname,ss from student,(
    select SId, AVG(score) as ss from sc  
    GROUP BY SId 
    HAVING AVG(score)> 60
    )r
where student.sid = r.sid;

最终结果:

+------+--------+----------+
| SId  | sname  | ss       |
+------+--------+----------+
| 01   | 赵雷   | 89.66667 |
| 02   | 钱电   | 70.00000 |
| 03   | 孙风   | 80.00000 |
| 05   | 周梅   | 81.50000 |
| 07   | 郑竹   | 93.50000 |
+------+--------+----------+

以上

猜你喜欢

转载自www.cnblogs.com/lattesea/p/12159387.html
今日推荐