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和课程名称

相关推荐
时间售卖铺39 分钟前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw44 分钟前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社2 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙2 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3763 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02144 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川4 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组4 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw344 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go5 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型