2016-10-07 3 views
0

Текущий код, который я нашел, средний и показывает все 4. Я пытаюсь обрезать его, чтобы отображать только верхнюю часть 2 наивысшего среднего. Текущий код, который у меня есть, ниже., показывающий верхние 2 значения (или дно 2) в оракуле

SELECT BRANCHSUBURB, AVG(SESSIONPRICE) 
FROM BRANCH NATURAL JOIN SESSIONS 
GROUP BY BRANCHSUBURB 
ORDER BY AVG(SESSIONPRICE) ASC; 

Я хотел бы только показать нижние 2 значения (которое будет самым высоким) Или, если это будет проще, показать верхние 2 значения (и сортировать по убыванию)

enter image description here

ответ

0

В Oracle, вы можете использовать подзапрос:

SELECT * 
FROM (SELECT BRANCHSUBURB, AVG(SESSIONPRICE) 
     FROM BRANCH NATURAL JOIN SESSIONS 
     GROUP BY BRANCHSUBURB 
     ORDER BY AVG(SESSIONPRICE) ASC 
    ) x 
WHERE rownum <= 2; 

В Oracle 12c +, вы можете использовать стандартные функции ANSI, поэтому подзапрос не необходимо:

SELECT BRANCHSUBURB, AVG(SESSIONPRICE) 
FROM BRANCH NATURAL JOIN SESSIONS 
GROUP BY BRANCHSUBURB 
ORDER BY AVG(SESSIONPRICE) ASC 
FETCH FIRST 2 ROWS ONLY; 
+0

Благодарим за ваше время. Первое решение, которое вы опубликовали, отлично работает :). – Dan

 Смежные вопросы

  • Нет связанных вопросов^_^