【发布时间】:2020-05-04 06:39:44
【问题描述】:
我刚开始学习SQL,这是老师在在线课程中给出的演示,效果很好。该声明正在寻找“具有相同 GPA 的其他学生数量等于具有相同 sizeHS 的其他学生数量的学生”:
select *
from Student S1
where (
select count(*)
from Student S2
where S2.sID <> S1.sID and S2.GPA = S1.GPA
) = (
select count(*)
from Student S2
where S2.sID <> S1.sID and S2.sizeHS = S1.sizeHS
);
似乎在这个where 子句中,我们比较两个关系(因为子查询的结果是一个关系),但大多数时候我们是在比较属性(到目前为止正如我所见)。
所以我在考虑比较两个RELATION时,RELATION应该包含多少个属性,多少个元组有要求。如果不是,当有多个属性或多个元组时,我们如何比较两个 RELATIONS 以及我们得到的结果是什么? 注意:
学生关系有4个属性:sID、sName、GPA、sizeHS。以下是数据:
+-----+--------+-----+--------+ |标识 |姓名 |平均绩点 |尺寸HS | +-----+--------+-----+--------+ | 123 |艾米 | 3.9 | 1000 | | 234 |鲍勃 | 3.6 | 1500 | | 345 |克雷格 | 3.5 | 500 | |第456章多丽丝 | 3.9 | 1000 | |第567章爱德华 | 2.9 | 2000 | |第678章费 | 3.8 | 200 | |第789章加里 | 3.4 | 800 | | 987 |海伦 | 3.7 | 800 | |第876章艾琳 | 3.9 | 400 | | 765 |周杰伦 | 2.9 | 1500 | |第654章艾米 | 3.9 | 1000 | |第543章克雷格 | 3.4 | 2000 | +-----+--------+-----+--------+这个查询的结果是:
+-----+--------+-----+---------+ |标识 |姓名 |平均绩点 |尺寸HS | +-----+--------+-----+---------+ | 345 |克雷格 | 3.5 | 500 | |第567章爱德华 | 2.9 | 2000 | |第678章费 | 3.8 | 200 | |第789章加里 | 3.4 | 800 | | 765 |周杰伦 | 2.9 | 1500 | |第543章克雷格 | 3.4 | 2000 | +-----+--------+-----+---------+【问题讨论】:
-
请限制为一个数据库。什么是样本数据?你期待什么输出?对于一致的术语,数据库具有行和列以及{sub}查询。
-
MySQL SQL Server
-
现在可以了吗?对不起,我是学生,刚开始学习数据库。