查询“ 01 “课程比“ 02 “课程成绩高的学生的信息及课程分数

2023-05-16

这个是一个比较经典的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.Sid
							inner JOIN sc s1 on stu.Sid = s1.Sid

①通过表中赵雷可以看出某一条数据中既包含两个课程的数据,可能这两个课程都是课程一,等等情况
在这里插入图片描述
② 然后,选出一条数据中既有课程一又有课程二的数据(有的话肯定是两条,设定一条数据中前面的字段为课程一),然后选择课程一大于课程二的数据

select * from student stu 
							inner join sc s on stu.Sid = s.Sid
							inner JOIN sc s1 on stu.Sid = s1.Sid
							where s.Cid = '01' and s1.Cid = '02' 
							and s.score > s1.score

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查询“ 01 “课程比“ 02 “课程成绩高的学生的信息及课程分数 的相关文章

  • JAVA-- 带你重温JAVA NIO中的ZERO COPY 零拷贝

    java zero copy介绍 Java零拷贝是一种技术 在不经过应用程序的情况下 直接将数据从文件或内存映射到套接字 从而减少数据拷贝和上下文切换的次数 提高数据传输的效率 Java中支持零拷贝的方法 java nio channels
  • JUnit 5 使用教程 及 JUnit 4/5的差异

    1 JUnit 5产生的原因 JDK 8在java中带来了迷人的功能 最值得注意的是lambda表达式 为了适应 Java 8 风格的编码和新的功能特性 JUnit 提供了JUnit 5 2 JUnit 5 架构 与 JUnit 4 相比
  • JAVA-- 带你重温函数式接口、使用Functional Interface最佳实践

    1 概念及分类 函数式接口 Functional Interface 就是一个有且仅有一个抽象方法 但是可以有多个非抽象方法的接口 并且这类接口使用了 FunctionalInterface进行注解 在jdk8中 引入了一个新的包java
  • 如何基于LLMs使用LangChain构建强大的差异化应用--LangChain之初体验

    近年来 语言模型 LMs 特别是LLMs已经成为最令人兴奋和最有影响力的技术之一 它们可以为各种目的生成自然语言文本 例如回答问题 撰写摘要 创建故事等等 然而 仅使用LMs还不足以构建真正强大且与众不同的应用程序 您还需要 将LMs连接到
  • 连接局域网下centos服务器和mysql数据库慢优化方法

    连接局域网下centos服务器和mysql数据库慢优化方法 Xshell连接centos比较慢优化 通过xshell连接服务器需要服务端安装openssl xff0c openssl配置项UseDNS 默认情况是开启状态的 xff0c Us
  • 云技术概念

    云计算概念是由Google提出的 xff0c 这是一个美丽的网络应用模式 狭义云计算是指IT基础设施的交付和使用模式 xff0c 指通过网络以按需 易扩展的方式获得所需的资源 xff1b 广义云计算是指服务的交付和使用模式 xff0c 指通
  • 通过IP地址和子网掩码与运算计算相关地址

    通过IP地址和子网掩码与运算计算相关地址 知道ip地址和子网掩码后可以算出 xff1a 1 网络地址 2 广播地址 3 地址范围 4 本网有几台主机 例1 xff1a 下面例子IP地址为192 168 100 5 子网掩码是255 255
  • 关于VSCode的三个配置文件

    关于VSCode的三个配置文件 若要使用VSCode来开发C 43 43 程序 xff0c 则应该了解以下三种配置文件 xff0c 分别为 xff1a tasks json xff1a 编译器相关的配置文件 比如 xff0c 设置编译指令
  • 用Prime95来做linux下CPU压力测试

    Prime95是用来做linux下CPU压力测试的 由GIMPS Great Internet Mersenne Prime Search xff09 所提供 主要是透过运算找出梅森质数 质数 xff08 Prime number xff0
  • ubuntu修改启动项等待时间、修改启动项顺序、更改启动内核

    目录 ubuntu修改启动项等待时间 修改启动项顺序 更改系统内核版本 ubuntu修改启动项等待时间 步骤 sudo vi etc default grub找GRUB TIMEOUT 61 10 那一行 xff0c 把10改为需要的时间即
  • 好电影推荐

    今天在网上看到一篇给大家推荐电影的帖子 xff0c 里面搜集了一些欧美电影 xff0c 有悬疑片 剧情片 动作片 恐怖片 xff0c 包括经典的 以及一些流传不是很广的 xff0c 在这里收藏一下与大家一起分享 xff1a 1 不请自来 典
  • CodeBlock无编辑器问题解决

    对于新手小白来说 xff0c 在使用CodeBlock做C语言或者C 43 43 方面的编写时 xff0c CodeBlock会出现如下情况 xff1a Can 39 t find compiler executable in your c
  • argparse—使用命令行输入,给变量赋值

    import argparse if name 61 61 39 main 39 parser 61 argparse ArgumentParser parser add argument 39 bbb 39 type 61 int def
  • 树莓派keras、TensorFlow环境安装记录

    1 安装arm版的TensorFlow xff0c 方法参考 xff1a https github com samjabrahams tensorflow on raspberry pi 2 安装keras sudo apt get ins
  • inception 论文阅读笔记

    inception V1 提出inception unit xff0c 采用多个size的卷积核对输入进行卷积 采用1x1 3x3 5x5的卷积核不是必须的 xff0c 而是为了方便 可以理解为不同大小的卷积核可以提取到图像中不同大小的特征
  • 树莓派3 raspbian系统 红外遥控器 lirc库使用笔记

    目的 xff1a 接入红外接受硬件 xff0c 使用红外遥控器控制树莓派 硬件图 xff1a 稍后补 接受口GPIO 61 18 首先安装lirc库 sudo apt get update sudo apt get install lirc
  • 树莓派设置静态IP

    vi etc dhcpcd conf 使用 vi 编辑文件 xff0c 增加下列配置项 指定接口 eth0 或者wlan0 interface wlan0 指定静态IP xff0c 24表示子网掩码为 255 255 255 0 stati
  • BGP→→

    BGP 4 提供了一套新的机制以支持无类域间路由 这些机制包括支持网络前缀的通告 取消 BGP 网络中 类 的概念 BGP 4 也引入机制支持路由聚合 xff0c 包括 AS 路径的集合 特点 BGP属于外部或域间路由协议 BGP的主要目标
  • omnet++,veins,sumo使用多应用层实现车辆和行人的模拟

    1 完成网络的搭建 xff1a 搭建一个简单的十字路口场景 xff1a 1 xff09 定义结点 xff1a 新建intersection node xml 内容如下 xff1a NOTE1 xff1a 结点属性type 61 34 tra

随机推荐