0

重複の可能性:OracleSQL-
列の上位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

ROWNUMOracleでは、疑似列を使用できます。

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 に答える