我正在爲我的數據庫系統考試(明天)進行學習,並且在練習中遇到問題時需要編寫查詢。這裏有一個例子:SQL - Query - max(count())
我被要求寫一個查詢,以回答以下問題:在與最低年齡的作家,誰最書籍寫的?
問題是我的老師不允許我使用子查詢中FROM子句和使用TOP。
我寫了一個答案,但一個我知道是不正確的:
SELECT W.AName, COUNT(W.ID_B) AS NBooks
FROM Write W, Author A1
WHERE (A1.AName = W.AName) AND
(A1.AAge = (SELECT MIN(A2.Age)
FROM Author A2))
GROUP BY W.AName
ORDER BY NBooks DESC
這一次給出了低年齡的所有作者,以及他們各自的寫的書(我希望..)號。正確的答案應該只是這一個的第一行。
我要明確指出:
Table Author
AName | AAge
---------------
John | 25
Rick | 30
Sean | 26
Lena | 25
Table Writes
AName | ID_B
---------------
John | 2
Lena | 1
John | 3
Lena | 4
Rick | 5
Rick | 6
Lena | 6
Rick | 7
Rick | 8
(請注意,肖恩我以前不寫任何一本書,書nº6有2個作家,和Rick是筆者與大多數書籍(4))
現在我上面寫的代碼給出了這樣的結果(我猜):
AName | NBooks
-----------------
Lena | 3
John | 2
(最低年齡爲25歲,並都莉娜和約翰是25)
請告訴我問的是:
AName | NBooks
-----------------
Lena | 3
(莉娜是作者,都用最低年齡(25),以書面大多數書籍的作者之間)
在此先感謝
您的意思是*最低*年齡的作者? – dotjoe
有兩個問題:*和使用TOP *可能意味着它的內聯視圖是禁止的,或者它必須用來代替內聯視圖。這是什麼?還使用Row_number是否允許? –
是的,與_lowest_年齡,對不起。 –