Count(), max(),min() 函数定义有很多选择

Count(), max(),min() fuctions definition with many selects

假设我们有一个 view/table hotel(hotel_n,hotel_name, room_n, price)。我想找最便宜的房间。我尝试了 group by room_n,但我希望酒店名称 (hotel_name) 在不分组的情况下显示在看板上。

所以作为 sql(oracle 11g) 的业余爱好者,我从

开始
select hotel_n, room_n, min(price)
from hotel
group by room_n;

但它显示错误:ORA-00979: not a GROUP BY expression。我知道我必须输入 group by room_n, hotel_n,但我希望 hotel_n 可以在我创建的 table 中看到而不按它分组!

有什么想法吗?非常感谢!

聚合函数对于显示每组行的聚合信息很有用。如果您想从一组行中获取与其他组成员相关的特定行(例如,每个 room_n 的最便宜房间),您可能需要一个分析函数,例如 rank :

SELECT hotel_n, hotel_name, room_n, price
FROM   (SELECT hotel_n, hotel_name, room_n, price
               RANK() OVER (PARTITION BY room_n ORDER BY price ASC) rk
        FROM   hotel) t
WHERE  rk = 1