2016-03-03 53 views
1

可以說我們有一個視圖/表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

樣品數據和期望的結果將會有所幫助。我猜你想在子查詢中獲得最低價格,並返回主表以獲得匹配的酒店... – sgeddes

+0

這將是很好的陳述你實際上想要達到的目標。 – Bulat

回答

0

聚合函數可用於顯示每組行的聚合信息。如果你想從一組行的特定行相對於其他小組成員(例如,每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 
+0

上帝爲什麼必須那麼複雜?!感謝的人,我會嘗試學習這種排名功能。 –