我开始学习 SQL 并且正在做这个练习:我有一个“书籍”表,其中包含每本书的信息(包括价格和流派 ID)。我需要得到平均价格最高的类型的名称。我想我首先需要按类型对价格进行分组,然后检索最高的名称。
我知道我可以通过以下方式获得 GENRE VS COST 的结果:
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);
这是不好的做法还是没有其他方法?我得到了正确的结果,但我对创建两次相同的选择并不满意。
我没有使用 PL SQL,所以我不能使用变量或类似的东西..
任何帮助将不胜感激。提前致谢!