取Oracle中实现TOP N,选取前几条记录
来源:互联网 发布:淘宝店铺扣分在哪里看 编辑:程序博客网 时间:2024/06/05 20:25
例1:查询各个部门的MANAGER(经理)中谁的工资最低
select * from
(
select t1.manager_id as 员工编号,t2.first_name as 员工姓名,t2.salary as 工资
from hr.departments t1
join hr.employees t2 on t1.manager_id=t2.employee_id
order by t2.salary
)
where rownum=1;
*******************************************************************************
where rownum=1;表示取第一行,
只能用<=、<、=1,而且排序好后得用一个子查询
原因:
1.因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。
查到就加上了,所以排序就是原先的rownum值了。
2.rownum j就是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
3.他是不存在的,只有在每次select后才会重新分配,所以加个子查询重新分配rownum
*******************************************************************************
例2:查询工资最高的5个人的信息,按工资降序排列:hr
select * from
(
select t2.department_name as 部门名称,
t1.first_name as 员工姓名,t1.salary as 工资
from employees t1
left outer join departments t2 on t2.department_id=t1.department_id
order by t1.salary desc
)
where rownum<=5
*******************************************************************************
但是如果想要提取出第m行的数据或者中间几条数据该怎么办?rownum=m是不行的
这里可以再用嵌套的子查询
例3:查询工资从高到低排名第2-5个人的信息
where no>=2 and no<=5 -- 取出2-5编号
例4:抽出按某种方式排序的记录集中的第M条记录开始的X条记录
和上面的差不多,第三层rownum<=N
最外的条件改为 no bwtween M and (m+x-1)就可以了
- 取Oracle中实现TOP N,选取前几条记录
- 如何在Oracle中实现SELECT TOP N,选取前几条记录
- Oracle取TOP N条记录
- oracle 不支持top 如何在oracle中实现top n
- 在ORACLE中实现SELECT TOP N
- 在ORACLE中实现Select TOP N
- 在ORACLE中实现SELECT TOP N
- 在ORACLE中实现 TOP N
- 实现Oracle Top N
- Spark中实现分组取TOP N (Scala版本)
- MSSQL ROW_NUMBER() OVER (...)实现数据的分组、排序、过滤重复、取Top n记录
- Spark:Java实现分组取Top N
- 在ORACLE中实现SELECT TOP N的方法
- 在ORACLE中实现SELECT TOP N的方法
- 在ORACLE中实现SELECT TOP N的方法
- 在ORACLE中实现SELECT TOP N的方法
- 在ORACLE中实现SELECT TOP N的方法
- 在ORACLE中实现SELECT TOP N的方法
- 程序员三十,向左还是向右?
- Android系统移植必读教程。快速移植系统
- 详解Linux内核红黑树算法的实现
- 图像分割
- python中限制进程实例个数实现
- 取Oracle中实现TOP N,选取前几条记录
- 每天一个小算法(matlab armijo)
- Android中的Handler, Looper, MessageQueue和Thread
- 题目1069:查找学生信息 题目18
- 摄氏温度换算为华氏温度
- Parameter 2 to mysqli_stmt::bind_param() expected to be a reference
- 关于linux下使用动态库
- 【BZOJ】【P1468】【Tree】【题解】【点分治】
- 《深入理解计算机网络》学习笔记