这要看你说的最后10条是按什么参照物了,是以某一列排序后(升序,降序)的后10列还是怎么滴? 下面语句你参考一下把。思路是使用分析函数,然后再包一层查询就可以了。row_number函数对重复数据排序也不同 select ename,sal, row_number() over( order by sal desc) as rank from emp;--排序,数据重复排序不同rank() over(partition by order by )--重复记录序号跳过...对某一类型进行排序 select deptno,ename,sal, rank() over (partition by deptno order by sal desc,comm) rank from emp;dense_rank() over(partition by order by )--重复记录连续 select * from ( select deptno,ename,sal, dense_rank() over (order by sal desc) rank from emp ) where rank < 10 ;列出薪金水平处于第四位的雇员信息 select ename,job,sal,deptno,rank_order from ( select ename,job,sal,deptno,dense_rank() over(order by sal desc) rank_order from emp ) where rank_order=4;
最後10條 應該是按某一字段排序后的吧。select xx, row_number() over( order by xx desc) as end10 from table
先将表中的记录进行排序然后在取前面10条记录如:select * from (select rownum as num, t1.* from 表名 t1 order by num desc) where rownum <=10
下面语句你参考一下把。思路是使用分析函数,然后再包一层查询就可以了。row_number函数对重复数据排序也不同
select ename,sal, row_number() over( order by sal desc) as rank from emp;--排序,数据重复排序不同rank() over(partition by order by )--重复记录序号跳过...对某一类型进行排序
select deptno,ename,sal, rank() over (partition by deptno order by sal desc,comm) rank from emp;dense_rank() over(partition by order by )--重复记录连续
select * from (
select deptno,ename,sal, dense_rank() over (order by sal desc) rank from emp
) where rank < 10 ;列出薪金水平处于第四位的雇员信息
select ename,job,sal,deptno,rank_order from (
select ename,job,sal,deptno,dense_rank() over(order by sal desc) rank_order from emp
) where rank_order=4;
最晚插进去的记录,ROWID最大。
所以4楼的写法,我认为是对的。