Sql 选择Oracle中最上面的两行
我试图只显示Oracle中最上面的两行,但是我没有看到任何有效的东西 我现在有Sql 选择Oracle中最上面的两行,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,我试图只显示Oracle中最上面的两行,但是我没有看到任何有效的东西 我现在有 SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) FROM BRANCH, SESSIONS WHERE SESSIONS.BRANCHID = BRANCH.BRANCHID GROUP BY BRANCHNAME, BRANCH.BRANCHID ORDER BY AVG(SESSIONPRICE) DESC 哪个返回这个 B2 A 1
SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE)
FROM BRANCH, SESSIONS
WHERE SESSIONS.BRANCHID = BRANCH.BRANCHID
GROUP BY BRANCHNAME, BRANCH.BRANCHID
ORDER BY AVG(SESSIONPRICE) DESC
哪个返回这个
B2 A 18.67
B4 B 17.57
B3 C 15.44
B1 D 13.99
但是,我只想要这个表的前两行
我到底该怎么做呢?使用RowNUM:
它用于指定要返回的记录数
SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE)
FROM BRANCH, SESSIONS
WHERE
ROWNUM <= 2 and SESSIONS.BRANCHID = BRANCH.BRANCHID
GROUP BY BRANCHNAME, BRANCH.BRANCHID
ORDER BY AVG(SESSIONPRICE) DESC ;
我再次编辑了答案:
SELECT *
FROM (SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE)
FROM BRANCH, SESSIONS
WHERE SESSIONS.BRANCHID = BRANCH.BRANCHID
GROUP BY BRANCHNAME, BRANCH.BRANCHID
ORDER BY AVG(SESSIONPRICE) DESC
)
WHERE ROWNUM <= 2;
从Oracle 9i开始,秩和稠密秩函数可用于确定前N行。示例: 使用秩获得前2个分支 使用稠密_秩获得前2个分支
只取前两行你试过了吗?是的,我试过了,但我找不到解决方案,我学习SQL才两周。很多我都不明白,我试过了,但是它改变了第三行的值。你知道它为什么会这样吗?这不会正常工作的。请参阅手册了解详细信息:太棒了,非常感谢您,经过编辑的手册工作得非常好。谢谢!特别感谢一个没有名字的马的帮助。现在我刚刚收到一个错误“FROM关键字not found where expected”更新了我的ans立即检查。
SELECT ename, sal
FROM ( SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) RANK() OVER (ORDER BY AVG(SESSIONPRICE) DESC) avg_rank
FROM BRANCH)
WHERE avg_rank<= 2;
SELECT ename, sal
FROM ( SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) DENSE_RANK() OVER (ORDER BY AVG(SESSIONPRICE) DESC) avg_Dense_rank
FROM BRANCH)
WHERE avg_Dense_rank<= 2;