1

私はこのコードを持っており、映画ごとにまとめられた販売席を表示します。

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)

誰か提案がありますか?テーブルは次のようになります。

4

1 に答える 1

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の降順で選択を並べ替え、SUMが最も高い行であるRownumのみを使用して最初の行を選択します。

編集:また、SUM列にNullが含まれている場合は、次のように、ORderの後にNULLを最後に追加してください。

.....
.....
Group by movie.mName
    Order by soldseatsum DESC NULLS LAST) test
    Where rownum<=1
于 2012-11-15T13:13:43.057 に答える