2012-10-18 75 views
0

可能重複:
Oracle SQL - How to Retrieve highest 5 values of a column尋找MAX

我的人一個簡單的問題,誰知道有關SQL什麼,但因爲我是很新的,雖然我已經嘗試了許多不同的方式,我永遠無法得到正確的語法。我只想顯示最高結果的平均酒店。目前它顯示所有酒店的平均值。這是我可以使用MAX函數嗎?我正在使用oracle

SELECT HOTEL.H_NAME "HOTEL NAME", ROUND(AVG (R_PRICE), 1) "AVERAGE ROOM PRICE" 
FROM ROOM JOIN HOTEL ON HOTEL.HOTEL_NO = ROOM.HOTEL_NO 
WHERE HOTEL.H_NAME = 'Shangra_La' 
OR HOTEL.H_NAME = 'Hilton' 
OR HOTEL.H_NAME = 'Sheraton' 
GROUP BY HOTEL.H_NAME 
ORDER BY HOTEL.H_NAME; 
+0

MAX函數會給你最高的價值,也就是最高的價格。我不明白你的意思是什麼「平均酒店是最高的結果」。 –

+0

請你能詳細說明'我想只顯示最高結果的平均酒店'是什麼意思?如果可能,請包含示例輸入數據和您希望/期望的輸出示例。 – MatBailie

+0

對不起,我把它寫得很差。目前查詢顯示了3家獨立酒店的平均房價。我希望查詢返回每個酒店房間中平均價格最高的酒店。3 –

回答

0

在Oracle中,您可以使用ROWNUM僞列。

SELECT * FROM 
(
    SELECT 
     HOTEL.H_NAME "HOTEL NAME", 
     ROUND(AVG (R_PRICE), 1) "AVERAGE ROOM PRICE" 
    FROM 
     ROOM 
      JOIN HOTEL ON HOTEL.HOTEL_NO = ROOM.HOTEL_NO 
    WHERE HOTEL.H_NAME IN ('Shangra_La','Hilton','Sheraton') 
    GROUP BY HOTEL.H_NAME 
) v 
WHERE ROWNUM = 1 
ORDER BY "AVERAGE ROOM PRICE" DESC; 
+0

如果您想獲得價格的最大值,則應該將「排序方式」子句應用於子查詢。否則,你只是訂購1行 - 第一。 –

+0

ahhh這很有道理,非常感謝! –