显示oracle中的前2个值(或底部2)

时间:2016-10-07 02:09:53

标签: sql oracle greatest-n-per-group

我已找到当前代码的平均值并显示全部4.我正在尝试将其减少以仅显示顶部 2最高平均值的信息。我目前的代码如下。

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

我想只显示底部的2个值(这将是最高的) 或者如果它更容易,显示前2个值(并按降序排序)

enter image description here

1 个答案:

答案 0 :(得分: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;