gpt4 book ai didi

SQL命令获取最大值字段,无需进行两次选择

转载 作者:行者123 更新时间:2023-12-03 23:09:52 24 4
gpt4 key购买 nike

我开始学习 SQL 并且正在做这个练习:我有一个“书籍”表,其中包含每本书的信息(包括价格和类型 ID)。我需要获得平均价格最高的流派名称。我想我首先需要按类型对价格进行分组,然后检索最高价格的名称..

我知道我可以通过以下方式获得 GENRE VS COST 的结果:

select b.genre, 
round(avg(b.price),2) as cost
from books b
group by b.genre;

我的问题是,要从该结果中获得平均价格最高的类型,我是否必须:

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,所以我不能使用变量或类似的东西..

任何帮助将不胜感激。提前致谢!

最佳答案

在Sql server上,可以在windowing function row_number中使用avg aggragate

 with m as(
select genre,
avg(price) cost,
row_number() over(order by avg(price) desc) rw
from books
group by genre
)
select * from m
where rw=1

关于SQL命令获取最大值字段,无需进行两次选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com