假设我们有一个视图/表格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
!
有什么想法吗?非常感谢你!
答案 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