SQL 训练题目

简介: 解题思路:要查询的是两个课程的成绩,而且还要显示学生的信息。所以需要用到两张表,SC,Student 这两张表。

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

解题思路:要查询的是两个课程的成绩,而且还要显示学生的信息。所以需要用到两张表,SC,Student 这两张表。


问题拆分:

  1. 怎么查找两个课程的成绩呢?
  2. 如何把课程表和学员信息表连接起来呢?


那么用到哪些知识呢?

  1. 子查询
  2. 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';


2105804-20230716203023122-475467406.png

两个子查询结束了以后,下一步就是使用 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;


2105804-20230716203049450-1567056809.png

二. 查询存在 “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;

2105804-20230716203106817-485233412.png

三. 查询同时存在 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;


2105804-20230716203120881-1650539811.png

目录
相关文章
|
6月前
|
SQL
面试必备杀技:SQL查询专项训练(二)
面试必备杀技:SQL查询专项训练
|
6月前
|
SQL
面试必备杀技:SQL查询专项训练(一)
面试必备杀技:SQL查询专项训练
|
6月前
|
SQL 数据库
数据库Sql题目 : 不用id,每隔10行取一条数据
数据库Sql题目 : 不用id,每隔10行取一条数据
|
6月前
|
SQL
面试必备杀技:SQL查询专项训练
面试必备杀技:SQL查询专项训练
|
SQL Oracle 关系型数据库
实际开发中我印象最深的一道SQL题目
SQL不仅是一个工具,更是一种思维方式,它可以帮助我们发掘数据中的潜在价值,为业务决策提供有效的支持。在软件开发过程中,数据库也是很重要的一环。
113 1
|
SQL 数据库
阿里云瑶池数据库SQL挑战令题目三
阿里云瑶池数据库SQL挑战令题目三
110 1
|
SQL 存储 关系型数据库
数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练(2)
数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练(2)
数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练(2)
|
存储 SQL 缓存
数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练(1)
数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练(1)
数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练(1)
多表查询 SQL21用户题目回答情况(三种写法)
多表查询 SQL21用户题目回答情况(三种写法)
161 0
多表查询 SQL21用户题目回答情况(三种写法)