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

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

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

一、练习题

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

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.课程号;

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

- 考察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.课程号

你可能感兴趣的:(mysql多表查询面试题)