半缘修道半缘君

【作业】列出薪资第2高到第8高的员工

上一篇 / 下一篇  2014-03-19 12:55:53 / 个人分类:不懂的请指教~

SELECT sal,ename
FROM (          SELECT ROWNUM r,o.*
                FROM (         
                                SELECT *
                                FROM emp
                                ORDER BY sal DESC
                      ) o       
                WHERE ROWNUM < = 8
      )
WHERE r > = 2;


SELECT sal,ename
FROM (          SELECT *
                FROM emp
                ORDER BY sal DESC
      )
WHERE ROWNUM <=8
MINUS
SELECT sal,ename
FROM (          SELECT *
                FROM emp
                ORDER BY sal DESC
      )
WHERE ROWNUM <2
ORDER BY sal DESC;


SELECT * 
FROM (
SELECT rank() over(ORDER BY sal DESC)AS rank,ename,job,sal 
FROM emp
)
WHERE rank > = 2 
AND rank < = 8;

但是查询的结果只有7个 工资第二高的员工有两个 实际上应该还有一个工资为1300的员工没有查询到

TAG:

取次花丛懒回顾、 引用 删除 lotus730   /   2014-03-19 17:44:05
&#83;ELECT sal,ename
FROM &#40;          &#83;ELECT dense_rank&#40;)over &#40;
                                         ORDER BY sal DE&#83;C
                                         ) A&#83; rank,sal,ename
                FROM emp              
      )
WHERE rank &#62; &#61; 2
and rank &#60; &#61; 8;

多学多用
了解rownum、rank和dense_rank的用法
 

评分:0

我来说两句

lotus730

lotus730

、半缘修道半缘君

我的栏目

日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 1427
  • 日志数: 1
  • 建立时间: 2014-03-19
  • 更新时间: 2014-03-19

RSS订阅

Open Toolbar