前言:
继上一篇 mysql面试题 续写
今天的题:
一.第一题
09)查询学过「张三」老师授课的同学的信息
分析:
1. 进行连表查询所有老师的授课及相应学生的信息
2.进行条件查询 tname=张三
SQL语句:
输出结果:
二.第二题
10)查询没有学全所有课程的同学的信息
分析:
1.总共三门课程,意思就是只学了一门或者两门课程的学生
2.课程的总数量
3.分组查询所有学生的课程数量
4.将其对比
SQL语句:
输出结果:
三.第三题
11)查询没学过"张三"老师讲授的任一门课程的学生姓名
分析:
1.查询学过张三老师课程的学生
2.去除 not in
SQL语句:
输出结果:
四.第四题
12)查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
分析:
1.查询所有不及格的学生 按照学号和姓名进行分组
2.筛选两门及以上的
3.运用函数 count 数量 avg平均数 round 小数
SQL语句:
输出结果:
五.第五题
13)检索" 01 "课程分数小于 60,按分数降序排列的学生信息
分析:
1.查询所有的课程小于60的 加上条件 01课程
2.降序 desc 输出
SQL语句:
输出结果:
六.第六题
14)按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
分析:
1.分组 学生名字和id
2.查询平均成绩
3.降序输出
SQL语句:
输出结果:
七.第七题 ⭐
-- 15)查询各科成绩最高分、最低分和平均分:
-- 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
-- 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
分析:
1.分组 课程id 和 课程名字
2.最高分 max 最低分 min 平均分 avg
3 要求 及格率,中等率,优良率,优秀率 首先要算出人数,然后除以总人数
4. if 相当于三元运算符 ;sum 符合条件就加 1 算出和 再除以总人数 ;round 精确小数点 ; concat 具有拼接的作用,给小数拼接百分号
SQL语句:
输出结果: