mysql——面试题初体验

查询环境

1、student(学生表)

2、课程表(course)

3、教师表(teacher)

4、成绩表(score)

问题

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

mysql> select s.s_id as 学号,s.s_name as 姓名 from student as s;

+--------+--------+

| 学号 | 姓名 |

+--------+--------+

| 1 | 张三 |

| 2 | 张三 |

| 3 | 张四 |

| 4 | 张五 |

+--------+--------+

4 rows in set (0.00 sec)

mysql> select sc.s_id,sum(s_score) as scoresum ,count(c_id) as coursenumber from score as sc group by sc.s_id;

+------+----------+--------------+

| s_id | scoresum | coursenumber |

+------+----------+--------------+

| 1 | 141 | 3 |

| 2 | 112 | 3 |

| 3 | 217 | 3 |

| 4 | 151 | 3 |

+------+----------+--------------+

4 rows in set (0.00 sec)

把上面的两个表再关联查询

mysql> select s.s_id as 学号,s.s_name as 姓名,d.scoresum as 总成绩,d.coursenumber as 选课数 from student as s,

-> (select sc.s_id,sum(s_score) as scoresum ,count(c_id) as coursenumber from score as sc group by sc.s_id) as d

-> where s.s_id=d.s_id;

+--------+--------+-----------+-----------+

| 学号 | 姓名 | 总成绩 | 选课数 |

+--------+--------+-----------+-----------+

| 1 | 张三 | 141 | 3 |

| 2 | 张三 | 112 | 3 |

| 3 | 张四 | 217 | 3 |

| 4 | 张五 | 151 | 3 |

+--------+--------+-----------+-----------+

4 rows in set (0.00 sec)

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

mysql> select s_id, s_name from student where s_id in (select s_id from score where c_id in (select c_id from course where t_id = (select t_id from teacher where t_name = "数学老师")));

+------+--------+

| s_id | s_name |

+------+--------+

| 1 | 张三 |

| 3 | 张四 |

| 2 | 张三 |

| 4 | 张五 |

+------+--------+

4 rows in set (0.00 sec)

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

①从成绩表查询1号选的课

mysql> select score.c_id from score

-> where score.s_id=1;

+------+

| c_id |

+------+

| 1 |

| 2 |

| 3 |

+------+

3 rows in set (0.00 sec)

②从成绩表查询所有同学的s_id

mysql> select sc.s_id from score as sc

-> where sc.c_id in(

-> select score.c_id from score

-> where score.s_id=1);

+------+

| s_id |

+------+

| 1 |

| 3 |

| 2 |

| 4 |

| 2 |

| 3 |

| 1 |

| 4 |

| 4 |

| 3 |

| 2 |

| 1 |

+------+

12 rows in set (0.00 sec)

③从student表查询所有学生信息

mysql> select * from student

-> where student.s_id in

-> (select sc.s_id from score as sc

-> where sc.c_id in(

-> select score.c_id from score

-> where score.s_id=1)

-> );

+------+--------+---------+-------+

| s_id | s_name | s_birth | s_sex |

+------+--------+---------+-------+

| 1 | 张三 | 10 | 男 |

| 2 | 张三 | 11 | 男 |

| 3 | 张四 | 1 | 男 |

| 4 | 张五 | 12 | 女 |

+------+--------+---------+-------+

4 rows in set (0.00 sec)

第③次就查询到了和"1"号的同学学习的课程完全相同的其他同学学号和姓名

(4)按平均成绩从高到低显示所有学生的"数学"(c_id=1)、"语文"(c_id=2) 、英语"(c_id=3)三门的课程成绩,按如下形式显示:学生ID,数学,语文,英语,有效课程数,有效平均分

①查询有效平均分

mysql> select s_id as 学号,avg(s_score) as 有效平均分 from score group by s_id order by 有效平均分 desc;

+--------+-----------------+

| 学号 | 有效平均分 |

+--------+-----------------+

| 3 | 72.3333 |

| 4 | 50.3333 |

| 1 | 47.0000 |

| 2 | 37.3333 |

+--------+-----------------+

4 rows in set (0.00 sec)

以下为参考案例

mysql> select * from score

-> left join(

-> select s_id,avg(s_score) as avscore from score

-> group by s_id

-> )as d

-> on score.s_id=d.s_id

-> order by avscore desc;

+------+------+---------+------+---------+

| s_id | c_id | s_score | s_id | avscore |

+------+------+---------+------+---------+

| 3 | 3 | 88 | 3 | 72.3333 |

| 3 | 2 | 65 | 3 | 72.3333 |

| 3 | 1 | 64 | 3 | 72.3333 |

| 4 | 1 | 78 | 4 | 50.3333 |

| 4 | 2 | 65 | 4 | 50.3333 |

| 4 | 3 | 8 | 4 | 50.3333 |

| 1 | 1 | 24 | 1 | 47.0000 |

| 1 | 3 | 91 | 1 | 47.0000 |

| 1 | 2 | 26 | 1 | 47.0000 |

| 2 | 2 | 25 | 2 | 37.3333 |

| 2 | 3 | 9 | 2 | 37.3333 |

| 2 | 1 | 78 | 2 | 37.3333 |

+------+------+---------+------+---------+

12 rows in set (0.00 sec)

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

相关推荐
数据知道1 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707531 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha1 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_1 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance1 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋2 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.2 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
天天爱吃肉82183 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
大巨头3 小时前
sql2008 数据库分页语句
数据库
m0_715575343 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python