具有许多选择的Count(),max(),min()函数定义

时间:2016-03-03 22:46:25

标签: sql function group-by greatest-n-per-group min

假设我们有一个视图/表格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

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

1 个答案:

答案 0 :(得分:0)

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

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