mysql多表查询面试题_SQL面试题:多表查询》练习题答案

复仇者联盟中多个人物之间有着关系,同样的,表和表之间也会有关系,这种关系在数据库里叫做联结(join),多表查找也是通过联结来实现的。

这是《从零学会sql》系列课程第5节课《多表查询》的练习题,也是常考常考的面试题。

9245fe53cbc8

9245fe53cbc8

一、练习题

9245fe53cbc8

查询所有学生的学号、姓名、选课数、总成绩

selecta.学号,a.姓名,count(b.课程号)as选课数,sum(b.成绩)as总成绩fromstudentasa leftjoinscoreasbona.学号 = b.学号groupbya.学号;

查询平均成绩大于85的所有学生的学号、姓名和平均成绩

selecta.学号,a.姓名,avg(b.成绩)as平均成绩fromstudentasaleftjoinscoreasbona.学号 = b.学号groupbya.学号havingavg(b.成绩)>85;

查询学生的选课情况:学号,姓名,课程号,课程名称

selecta.学号, a.姓名, c.课程号,c.课程名称fromstudent ainnerjoinscore bona.学号=b.学号innerjoincourse conb.课程号=c.课程号;

9245fe53cbc8

查询出每门课程的及格人数和不及格人数

- 考察case表达式select课程号,sum(casewhen成绩>=60then1else0end)as及格人数,sum(casewhen成绩 <60then1else0end)as不及格人数fromscoregroup by 课程号;

使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称

-- 考察case表达式selecta.课程号,b.课程名称,sum(casewhen成绩between85and100then1else0end)as'[100-85]',sum(casewhen成绩 >=70and成绩<85then1else0end)as'[85-70]',sum(casewhen成绩>=60and成绩<70then1else0end)as'[70-60]',sum(casewhen成绩<60then1else0end)as'[<60]'fromscoreasarightjoincourseasbona.课程号=b.课程号

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值