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

相关推荐
imDwAaY4 小时前
一条 SQL 发出去之后,MySQL 到底做了什么?
sql·mysql
行业研究员5 小时前
Agent Memory降低Token消耗原理解析
数据库·人工智能·oracle·腾讯云·智能体
yixun_gdas5 小时前
企业网站内容巡查的价值与方法:企业官网的合规与形象管理
数据库·内容运营
见闻小天地5 小时前
空调机房赛莱默B&G冷冻泵/冷却泵的核心技术特性分析
大数据·运维·数据库
辛迪聊物业数字化5 小时前
物业管理系统新手部署与实操指南
数据库·物联网·架构·系统架构
March.s5 小时前
MySQL 数据库原理与实战:从数据管理到 LAMP 建站全解
数据库·mysql
字节跳动的猫6 小时前
LikeShop 种草社区模块二开:笔记发布、话题广场与商品挂载实现
数据结构·数据库
IvorySQL6 小时前
PostgreSQL 日报| PostgreSQL JDBC 安全更新(10 月 10 日)
数据库·postgresql·区块链
悟道子HD6 小时前
网络安全基本功——MySQL基础
android·mysql·web安全
晚风叙码6 小时前
MySQL 增删改查(CRUD)完全指南:从入门到面试
数据库·mysql·面试