MySQL多表查询面试题一

其中分析题意,学生表student是与成绩表score关联,课程表course与教师表teacher关联,由此可以先确定关联关系,学生表为s,课程表为c,教师表为t,成绩表为o。s.s_id=o.s_id,c.t_id=t.t_id

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

学生表与成绩表关联,通过成绩来确认选课数

select s.s_id 学号,s.s_name 姓名,count(s_score) 选课数,sum(s_score) 总成绩 from score o inner join student s on o.s_id = s.s_id group by s.s_id;

(2)查询学过"张三"老师所教的所有课的同学的学号、姓名

运用子查询来查询从学生的学号查到科目中有相同学号后再通过课程编码去找教师编码最后找到张三

select s.s_id,s.s_name from student where s_id in(select o.s_id from score,course,teacher where o.c_id= c.c_id and c.t_id=t.t_id and t.t_name='张三');

(3) 查询和"02"号的同学学习的课程完全相同的其他同学学号和姓名

运用子查询先在成绩表中找到学号为02的课程编码过滤出每个人的课程,再对02学习的课程编码通过having进一步过滤后与其他人学习的课程编码与02的比较是否相同来筛选出与02所学课程完全相同的学号姓名。

select s_id from score where c_id in(select c_id from score where s_id='02') group by s_id having count(*) = (select count(*) from score where s_id = '02');

(4)按平均成绩从高到低显示所有学生的"数据库"(c_id='04)、"企业管理"(c_id='01')、"英语"(c_id='06) 三门的课程成绩,按如下形式显示:学生ID,数据库,企业管理,英语,有效课程数,有效平均分

题目可得所有学生学习的课程内容有数据库c_id=04,企业管理c_id=01,英语c_id=06共三门,

select s_id as 学号,c_id='04' as 数据库,c_id='01' as 企业管理,c_id='06' as 英语,(select count(distinct o.c_id) from score o where s.s_id = o.s_id)as 有效课程数, (select avg(o.s_score) from score o where s.s_id=o.s_id ) as 有效平均分 order by 平均成绩 desc;

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

select o.c_id as 课程ID,c_name as 课程名称,sum(case when s_score between 85 and 100 then 1 else 0 end) as '[100-85]',sum(case when s_score between 70 and 85 then 1 else 0 end) as'[85-70]',sum(case when s_score between 60 and 70 then 1 else 0 end) as '[70-60]',sum(case when s_score < 60 then 1 else 0 end) as '[<60]' from score,course where o.c_id = c.c_id group by o.c_id;

综上,如若有误欢迎指出

相关推荐
nongcunqq3 小时前
abap 操作 excel
java·数据库·excel
rain bye bye3 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼3 小时前
MySQL的配置
mysql·配置
阿里云大数据AI技术5 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师5 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779135 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
六元七角八分6 小时前
pom.xml
xml·数据库
虚行6 小时前
Mysql 数据同步中间件 对比
数据库·mysql·中间件
奥尔特星云大使6 小时前
mysql读写分离中间件Atlas安装部署及使用
数据库·mysql·中间件·读写分离·atlas
牛马baby6 小时前
【mysql】in 用到索引了吗?
数据库·mysql·in