在 oracle 中显示前 2 个值(或后 2 个)
showing top 2 values (or bottom 2) in oracle
我当前的代码找到了平均值并显示了所有 4 个。我正在尝试 trim 它只显示最高 2 个最高平均值的信息 .我的当前代码如下。
SELECT BRANCHSUBURB, AVG(SESSIONPRICE)
FROM BRANCH NATURAL JOIN SESSIONS
GROUP BY BRANCHSUBURB
ORDER BY AVG(SESSIONPRICE) ASC;
我想只显示底部的 2 个值(这将是最高的)
或者,如果它会更容易,显示前 2 个值(并按降序排序)
在 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;
我当前的代码找到了平均值并显示了所有 4 个。我正在尝试 trim 它只显示最高 2 个最高平均值的信息 .我的当前代码如下。
SELECT BRANCHSUBURB, AVG(SESSIONPRICE)
FROM BRANCH NATURAL JOIN SESSIONS
GROUP BY BRANCHSUBURB
ORDER BY AVG(SESSIONPRICE) ASC;
我想只显示底部的 2 个值(这将是最高的) 或者,如果它会更容易,显示前 2 个值(并按降序排序)
在 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;