寻找最大值。

14 浏览
0 Comments

寻找最大值。

可能重复:

Oracle SQL - 如何检索某列的前5个最高值

我有一个简单的问题,想请教一些了解SQL的人,但由于我是一个非常新手,尽管我尝试了很多不同的方法,但似乎从来无法正确使用语法。我想只显示平均酒店价格中的最大结果。目前它显示的是每个酒店的平均价格。我可以使用MAX函数来实现这个吗?我正在使用Oracle。

SELECT HOTEL.H_NAME "酒店名称", ROUND(AVG (R_PRICE), 1) "平均房间价格"
FROM ROOM JOIN HOTEL ON HOTEL.HOTEL_NO = ROOM.HOTEL_NO
WHERE HOTEL.H_NAME = '香格里拉'
OR HOTEL.H_NAME = '希尔顿'
OR HOTEL.H_NAME = '喜来登'
GROUP BY HOTEL.H_NAME
ORDER BY HOTEL.H_NAME;

0
0 Comments

在Oracle中,可以使用伪列ROWNUM来解决问题。(Finding the MAX)这个问题的出现是因为在查询中使用了ROWNUM = 1来获取最大值,但是没有在子查询中使用ORDER BY子句进行排序,导致只返回第一行结果而不是最大值。

要解决这个问题,需要将ORDER BY子句应用到子查询中,以获取价格的最大值。修改后的查询如下:

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 
    ORDER BY "AVERAGE ROOM PRICE" DESC
) v
WHERE ROWNUM = 1;

这样修改后,查询将返回价格的最大值。

0