0

可能重复:
Oracle SQL - 如何检索列的最高 5 个值

对于对 SQL 一无所知的人,我有一个简单的问题,但由于我很新,虽然我尝试了许多不同的方法,但我似乎永远无法正确地获得语法。我只想显示 MAX 结果的平均酒店。目前它单独显示所有酒店的平均值。这是我可以使用 MAX 功能的东西吗?我正在使用甲骨文

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;
4

1 回答 1

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;
于 2012-10-18T11:32:08.963 回答