SQL 训练题目

title: SQL 训练题目
date: 2023-7-15 01:45:50
tags:

- SQL 训练

查询 "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';

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

测试同步

你可能感兴趣的:(sql,数据库)