SQL 训练题目
title: SQL 训练题目
date: 2023-7-15 01:45:50
tags:
- SQL 训练
一. 查询 "01" 课程比 "02" 课程成绩高的学生的信息及课程分数
解题思路:要查询的是两个课程的成绩,而且还要显示学生的信息。所以需要用到两张表,SC,Student 这两张表。
问题拆分:
- 怎么查找两个课程的成绩呢?
- 如何把课程表和学员信息表连接起来呢?
那么用到哪些知识呢?
- 子查询
- join
语句实现:先找到两门课的成绩
-- 课程1的成绩
SELECT
sid,
score AS class1
FROM
sc
WHERE
sc.cid = '01';
-- 课程2的成绩
SELECT
sid,
score AS class2
FROM
sc
WHERE
sc.cid = '02';

两个子查询结束了以后,下一步就是使用 join 把这两个查询的结果连接起来:
SELECT
*
FROM
Student
RIGHT JOIN (
SELECT
t1.sid,
class1,
class2
FROM
( SELECT sid, score AS class1 FROM sc WHERE sc.cid = '01' ) t1,
( SELECT sid, score AS class2 FROM sc WHERE sc.cid = '02' ) t2
WHERE
t1.sid = t2.sid
AND t1.class1 > t2.class2
) r ON Student.sid = r.sid;

二. 查询存在 "01" 课程但可能不存在 "02" 课程的情况(不存在时显示为 null)
思路:首先要查询所有的学生的选课情况,然后找到选择课程 01 和选择课程 02 的学生
解决方法:使用 join
选择两个分别选择课程 01 和课程 02 的学员表,然后把这两个表 join 起来
SELECT
*
FROM
( SELECT * FROM sc WHERE sc.cid = '01' ) t1
LEFT JOIN ( SELECT * FROM sc WHERE sc.cid = '02' ) t2 ON t1.sid = t2.sid;

三. 查询同时存在 01 和 02 课程的情况
思路:要求同时选择了 01 和 02 课程的情况,则需要使用 where 链接起来,这一题和上一题相比就是多了一个去除选了 01 但是没有选择 02 课程的这一部分
知识点:子查询,where语句
SELECT
*
FROM
( SELECT * FROM sc WHERE sc.cid = '01' ) t1,
( SELECT * FROM sc WHERE sc.cid = '02' ) t2
WHERE
t1.sid = t2.sid;

SQL 训练题目的更多相关文章
- 几道经典的SQL笔试题目
几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人 商品名称 数量 A 甲 2 B 乙 ...
- sql基础题目测试及正确答案
在网上做了一套基本的sql题目,以下是我的写的答案,适合基础人员练练 --创建测试数据 use test create table Student(S# varchar(10),Sname nvarc ...
- sql 一些题目
这道SQL笔试题你会怎么写(转) 最近面试了一些Senior BI的候选人,行业经验三年到七年不等,起初觉得这个Level的无需准备笔试题,碍于领导执念,就在真实项目中提取5道SQL题目,这里仅单说其 ...
- PL/SQL 训练09--面向对象
---对象基本声明.实现.使用--对象类型,类似与JAVA中的类,通俗的讲,就是捆绑了相关函数和过程的记录类型. ---对象声明 --create type 创建一个对象类型的规范部分 create ...
- Oracle sql 复习题目总结
sql 题目一 表结构 1.表名:g_cardapply 字段(字段名/类型/长度): apply_no varchar8; //申请单号(关键字) apply_date date; //申请日期 s ...
- sql常见题目
1 --student学生表(sno,sname,sex,birthday,tel) 2 --Course课程表(cno,cname) 3 --Sc 学生成绩表(sno,cno,score) 4 1. ...
- 一道关于比赛胜负的Sql查询题目
以前做过一道题目,一直没有来得及总结下来.贴图: 记得以前曾经找到了两种方法,今天试了一下,还是可以的,贴出过程: 下面是具体的查询方法: 原来放的是图片,今天又练习了一下,附代码: create T ...
- PL/SQL 训练13--plsql 优化
--数据缓存技术 --PGA和SGA---SGA:系统全局区域--PGA:Process Global Area是为每个连接到Oracle的用户进程保留的内存. ---PLSQL从PGA获取信息的速度 ...
- PL/SQL 训练12--动态sql和绑定变量
--什么是动态SQL?动态PL/SQL--动态SQL是指在运行时刻才构建执行的SQL语句--动态PL/SQL是指整个PL/SQL代码块都是动态构建,然后再编译执行 --动态SQL来可以用来干什么? - ...
- PL/SQL 训练11--包
--所谓包,就是把一组PL/SQL的代码元素组织在一个命名空间下.--一种可以把程序或者其他的PL/SQL元素比如游标.类型.变量的组织结构在一起的结构(包括逻辑结构和物理结构)--包提供了非常重要的 ...
随机推荐
- Html 表格 在线转 Markdown
复制 HTML Table F12 查看网页源代码 Html to markdown 在线转换 https://tableconvert.com/html-to-markdown 复制 Markdow ...
- BBS项目(四):临时评论渲染 文章子评论功能 后台管理页面搭建 添加文章页面搭建
目录 临时评论样式渲染 文章子评论业务逻辑 后台管理页面搭建 后台管理页面模板创建 添加文章页面搭建 富文本编辑器 添加文章初步实现 添加文章功能优化 beautifulsoup模块基本使用 临时评论 ...
- 用 WebRTC 打造一个音乐教育 App,要解决哪些音质难题?
在去年疫情期间,在线教育行业获得了井喷式的发展,这背后的技术功臣非 RTC 莫属.本文将分享 RTC 技术在音乐教育场景下的实践经验. 作者| 逸城 审校| 泰一 音乐教育场景 - 在线陪练 2020 ...
- Linux 下运行.NET 6 7 8 程序遇到的两个问题
一. /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的解决办法 1. 下载 libstdc++.so.6.0.21 文件 注意区分 ...
- AcWing 第 12 场周赛
题目链接:Here AcWing 3805. 环形数组 签到题,循环减少出现次数,如果是 cnt[x] = 1 的话加入新的数组中 const int N = 1e3 + 10; int cnt[N] ...
- 2016年第七届 蓝桥杯B组C/C++ 决赛题解
1.一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来,这 ...
- 领域驱动设计(DDD)实践之路(二):事件驱动与CQRS
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/Z3uJhxJGDif3qN5OlE_woA作者:wenbo zhang [领域驱动设计实践之 ...
- IDEA中无法调出中文输入法?
参考链接:idea写代码时无法切换到中文输入
- Go-命令行参数解析
1. 解析命令行参数 程序在执行时,获取在命令行启动程序是使用的参数 命令行( Command line interface -- CLI):基于文本来查看.处理.操作计算机的界面,又被称为 终端.控 ...
- [转帖]TIDB - TIDB集群的扩容和缩容及TIUP指令说明
一.TIUP工具简介 前面介绍了使用TIUP搭建TIDB集群,本篇文章详细介绍下使用TIUP对集群进行扩容和缩容. 在面对双十一这种流量突峰的场景,我们平常的TIDB集群有可能承受不住,因此需要提前进 ...