私はSQLを学び始めており、この演習に取り組んでいます。すべての本の情報(価格とジャンルIDを含む)を保持する「本」テーブルがあります。平均価格が最も高いジャンルの名前を取得する必要があります。まず、ジャンルごとに価格をグループ化してから、最高の名前を取得する必要があると思います。
次のようにして、GENREVSCOSTの結果を得ることができることを知っています。
select b.genre,
round(avg(b.price),2) as cost
from books b
group by b.genre;
私の質問は、その結果からAVGの価格が最も高いジャンルを取得するには、次のことを行う必要がありますか。
select aux.genre
from (
select b.genre,
round(avg(b.price),2) as cost
from books b
group by b.genre
) aux
where aux.cost = (select max(aux.cost)
from (
select b.genre,
round(avg(b.price),2) as cost
from books l
group by b.genre
) aux);
それは悪い習慣ですか、それとも別の方法はありませんか?正しい結果が得られますが、同じ選択範囲を2回作成することに不安があります。
PL SQLを使用していないため、変数などを使用できません。
どんな助けでもありがたいです。前もって感謝します!