合計の最大値を取得する方法がわかりません。降順で表示してから「rownum = 1」を使用できると思ったのですが、うまくいきませんでした。助言がありますか?これが私のコードです。
select ca_make, sum(ma_cost)
from cab join maintain on ca_cabnum = ma_cabnum
Where rownum =1
group by ca_make
order by sum(ma_cost) desc
ROWNUM() は ORDER BY の前に適用されます。サブクエリを使用する必要があります。
select * from (
select ca_make, sum(ma_cost)
from cab join maintain on ca_cabnum = ma_cabnum
group by ca_make
order by sum(ma_cost) desc
)
where rownum = 1
Oracle で [top-n] クエリを実装するには、いくつかの方法があります。 SO で [oracle] [top-n] を検索して、詳細を確認してください。
まず第一に、おそらく使用したいでしょうLEFT JOIN
。を使用すると、メンテナンスがまったく行われJOIN
ていないすべてのキャブが除外されます。(明らかに、これは最高コストを見つけることには関係ありませんが、最低コストを探す場合には違いが生じます。また、このクエリからコンパイルしようとした統計を深刻にゆがめます)。
さて、あなたの質問に答えるために...これを試してください:
select * from
(select ca_make, sum(ma_cost)
from cab
left join maintain on ca_cabnum = ma_cabnum
group by ca_make
order by sum(ma_cost) desc)
where rownum = 1
ここに の良い説明がありROWNUM
ます。あなたのケースは、ページの半分以下に具体的に対処されています(ただし、この機能を使用する場合は、ページ全体を読む価値があります)。