查询“ 01 “课程比“ 02 “课程成绩高的学生的信息及课程分数
这个是一个比较经典的sql面试题,面试的难度挺大的,这里我将详细讲解,怎么使用这个方法进行查询操作。
- student(Sid,Sname,Sage,Ssex)
Sid 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
创建学生表表,添加对应的测试数据,测试数据如下
create table student(Sid varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
insert into student values('01' , '赵雷' , '1990-01-01' , '男');
insert into student values('02' , '钱电' , '1990-12-21' , '男');
insert into student values('03' , '孙风' , '1990-05-20' , '男');
insert into student values('04' , '李云' , '1990-08-06' , '男');
insert into student values('05' , '周梅' , '1991-12-01' , '女');
insert into student values('06' , '吴兰' , '1992-03-01' , '女');
insert into student values('07' , '郑竹' , '1989-07-01' , '女');
insert into student values('08' , '王菊' , '1990-01-20' , '女');
- 成绩表
- sc(Sid,Cid,score)
- Sid 学生编号,Cid 课程编号,score 分数
- 创建学成绩表,添加对应的测试数据,测试数据如下
create table sc(Sid varchar(10),Cid varchar(10),score decimal(18,1));
insert into sc values('01' , '01' , 80);
insert into sc values('01' , '02' , 90);
insert into sc values('01' , '03' , 99);
insert into sc values('02' , '01' , 70);
insert into sc values('02' , '02' , 60);
insert into sc values('02' , '03' , 80);
insert into sc values('03' , '01' , 80);
insert into sc values('03' , '02' , 80);
insert into sc values('03' , '03' , 80);
insert into sc values('04' , '01' , 50);
insert into sc values('04' , '02' , 30);
insert into sc values('04' , '03' , 20);
insert into sc values('05' , '01' , 76);
insert into sc values('05' , '02' , 87);
insert into sc values('06' , '01' , 31);
insert into sc values('06' , '03' , 34);
insert into sc values('07' , '02' , 89);
insert into sc values('07' , '03' , 98);
思路①
解决问题的思路是创建一个虚拟表,该表中放置两个字段分别是学生的课程一与学生的课程二。
首先获得课程一所对应的表,语句如下
SELECT st.*,sc.* from student st inner join sc on (st.Sid = sc.Sid) and sc.cid = '01'
运行结果如下图
然后依据该表在关联课程表,查询课程一与课程二都在该表中的字段,语句如下
SELECT st.*,sc.*,s2.* from student st inner join sc on (st.Sid = sc.Sid) and sc.cid = '01'
inner join sc s2 on (st.Sid = s2.Sid) and s2.cid = '02'
运行结果如下图:
最后根据该表,在判断进行课程一比课程二大的判断,语句如下图所示:
SELECT st.*,sc.*,s2.* from student st inner join sc on (st.Sid = sc.Sid) and sc.cid = '01'
inner join sc s2 on (st.Sid = s2.Sid) and s2.cid = '02' where sc.score >s2.score
运行结果如下图:
思路②
创建一张虚拟表,虚拟表中一行数据中即有两个课程的数据。
select * from student stu inner join sc s on stu.Sid = s.Sidinner JOIN sc s1 on stu.Sid = s1.Sid
①通过表中赵雷可以看出某一条数据中既包含两个课程的数据,可能这两个课程都是课程一,等等情况
② 然后,选出一条数据中既有课程一又有课程二的数据(有的话肯定是两条,设定一条数据中前面的字段为课程一),然后选择课程一大于课程二的数据
select * from student stu inner join sc s on stu.Sid = s.Sidinner JOIN sc s1 on stu.Sid = s1.Sidwhere s.Cid = '01' and s1.Cid = '02' and s.score > s1.score
查询“ 01 “课程比“ 02 “课程成绩高的学生的信息及课程分数相关推荐
- mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数......
查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...
- mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...
查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...
- mysql查询01课程比02课程_小菜菜mysql练习解读分析1——查询” 01 “课程比” 02 “课程成绩高的学生的信息及课程分数...
查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...
- 小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...
查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...
- mysql中 课程1比课程2成绩高_小菜菜 MySQL 练习解读分析 1-- 查询 01 课程比 02 课程成绩高的学生的信息及课程分数...
小菜菜 MySQL 练习解读分析 1-- 查询 "01" 课程比 "02" 课程成绩高的学生的信息及课程分数 查询 "01" 课程比 &qu ...
- Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】
- - 该文章为本人原创!主要是用来记录学习的过程和分享给需要的博友.若有出错或者更好解决方法欢迎评论和私信交流学习!!! ' Numpy数据分析模块实训 - 根据"某门课程平时成绩和期末考 ...
- 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。
题目要求: 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 解题思路: 将n个学生的数据表示为结构体数组.按照功能函 ...
- 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)
有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩) 代码: #include<stdio.h>#define ...
- 例 9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。
C程序设计(第四版) 谭浩强 例9.7 个人设计 例 9.7 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 代码块 ...
最新文章
- 第一章 java nio三大组件与使用姿势
- 【开发环境】Mac 中 IntelliJ IDEA 运行 Python 程序 ( 安装 Python Community Edition 插件 )
- Fedora下网络配置及相关命令
- java必知必会_Java必知必会--spring解析基础篇
- 嵌入式软件工程师2021面试指南【转】
- 购书中心管理系统的设计
- 想赚钱是好事,但盲目创业就容易悲剧
- WAV文件的二进制格式解析
- java编写数字时钟_用JAVA写数字时钟
- HeadFirstJava 4,5,6
- 华为杯数学建模竞赛百分百获奖经验分享(获奖 == 四分经验,三分运气,三分实力)
- 用java将excel文档格式的标日初单词转成适合有道单词本的xml格式
- 2017博鳌亚洲青年论坛(香港)顺利召开 中国发展人工智能优势在哪?
- window 获取cpu型号_教你如何修改电脑上的CPU型号信息!
- iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配尺寸@media
- python常见运算符
- 信息系统项目管理师考前建议
- js实现图片裁剪效果
- 配音秀显示服务器溜去配音啦,配音秀作品恢复方法操作介绍
- Promise的基础使用与生成器配合Promise解决回调地狱