可能这是一个愚蠢的问题,但我真的很难理解下面的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子句中的条件。感谢有人能为我解释这一点。
谢谢, 沫
答案 0 :(得分:2)
select codeName
from Spy as S1 --outer
where amountDue >=
(select avg(amountDue)
from Spy as S2 --inner
where S1.spymaster = S2.spymaster)
当执行上面两行时,你将从spy获得所有代号,但当你应用条件时,amountDue大于等于你的检索平均数量,其中s1和s2 spymaster是相同的。表示使用内部值检查外部值。当值相同时,将显示Codename。
我理解我与您分享的内容,如果您有任何关于此的信息,请告诉我,这对我有帮助!