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