0
相同的表中列可能这是一个愚蠢的问题,但我真的很难理解下面的SQL查询。等同于从条款
所以我正在做这个练习:什么是间谍的代码名称谁没有少金额比 间谍的平均amountDue与同一个间谍管理员?
表如下图所示:
codeName firstName lastName dateOfBirth gender mark amountDue spymaster bankAccount
007 James Bond 01-12-72 M Mole on chin 5050 Q 23456
bud Fanny Charleston 31-07-83 F Scar on cheek 25.67 Q 34567
freddie John Smith 05-05-54 M One finger missing 312.5 M 45678
用来解决这个问题的代码是:
select codeName
from Spy as S1
where amountDue >=
(select avg(amountDue)
from Spy as S2
where S1.spymaster = S2.spymaster)
我不明白的是在WHERE子句中的条件。感谢有人能为我解释那一点。
感谢, 莫
谢谢@Sandesh。我明白这个逻辑,我不明白的是内部的WHERE条件。为什么使用正在使用(其中S1.spymaster = S2.spymaster) – mobaset 2014-11-05 07:03:01
他们正在使用spymaster column.means s1.spymaster和s2.spymaster将外部表与内部表进行比较,当两者相等时,那些相关的amountDue将组合并查找平均值该数额与条件满足时的外部条件相符。当条件满足这些代码名称时将显示! – Sandesh 2014-11-05 07:24:40
好酷,谢谢。但让我们回到这个问题一分钟:_具有相同间谍管理员的间谍的间隔码amountDue的数量不会少于amountDue_ **的平均值** **。所以这个问题显然希望将数量与间谍报道的平均数量相比较(至少这是我的理解)。在隔离测试第二个嵌套的SQL查询之后,无论间谍报告的是哪个spymaster,查询平均所有的amountDue。对?我们不应该只计算与特定间谍大师相关的数额吗? – mobaset 2014-11-05 07:52:54