2012-11-15 34 views
1

的MAX我有這樣的代碼,這讓我賣總結每部電影席位:查找分組SUM

SELECT mName, SUM(soldSeats) 
FROM movie, show, prog 
WHERE movie.movieID = prog.movieID 
AND prog.showID = show.showID 
GROUP BY mName 

的問題是要找到電影,有賣席位最多,我嘗試添加該,但只得到行:

HAVING SUM(soldseats) = (SELECT MAX(SUM(soldseats)) FROM show 
GROUP BY solgteplasser) 

有沒有人有建議嗎?下面是表的樣子:Sum of a activity

回答

2
Select test.* 
from 
(Select movie.mName, SUM(show.soldSeats) as soldseatsum 
FROM movie, show, prog 
WHere movie.movieId = prog.movieID 
AND prog.showID = show.showID 
Group by movie.mName 
Order by soldseatsum DESC) test 
Where rownum<=1 

這樣你通過你的SUM 訂購選擇下行,並只選擇使用ROWNUM 這是最高的總和行的第一行。

編輯: 此外,在情況下,你在你的SUM列有空白點,確保您的訂單後添加NULLS LAST通過這樣的:

..... 
..... 
Group by movie.mName 
    Order by soldseatsum DESC NULLS LAST) test 
    Where rownum<=1 
+0

你的答案非常感謝,你的代碼工作完美。什麼「測試。*」到底做了什麼?我還沒有看到,這是否是某種觀點? – user1823846

+0

將您的初始選擇看作是名爲測試的臨時表 我使用它來選擇所有記錄的rownumber <= 1(這是唯一的第一行)。所以測試只是我給這個選擇的一個別名。這裏不需要太多,因爲我們只選擇來自特定選擇的字段。但我用它只是爲了培養良好的習慣:) –