2012-10-18 3 views
0

Можно создать дубликат:
Oracle SQL - How to Retrieve highest 5 values of a columnПоиск MAX

У меня есть простой вопрос для кого-то, кто знает что-либо о 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; 
+0

Функция MAX предоставит вам самое высокое значение, то есть самую высокую цену. Я не понимаю, что вы подразумеваете под «средней гостиницей, которая является результатом MAX». –

+0

Пожалуйста, не могли бы вы рассказать о том, что «Я хочу отображать только средний отель, который является результатом MAX». Означает? Если возможно, включите пример входных данных и пример для результата, который вы хотите/ожидаете. – 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

Предложение 'by by' должно применяться к подзапросу, если вы хотите получить максимальное значение цены. В противном случае вы просто заказываете 1 строку - сначала. –

+0

ahhh это имеет смысл, спасибо! –