Oracle高级查询之over(partition by...)
现有表,数据如下:

eg1:查询年龄第二的队员
通常写法:
select *
from (select a.*, rownum r
from (select t.* from l_student_info_tbl t order by t.sage desc) a) b
where b.r = 2
看下a子句结果集:

但如果时要统计每个年级,年龄第二大的,上面的sql就不行了,子句必须指定具体年级才可以按年级排序。
rank()/dense_rank() over(partition by ...order by ...)
现在导入一批东吴势力。
select e.*
from (select e.*,
rank() over(partition by e.sclassno order by e.sage desc) rank
from l_student_info_tbl e) e
where e.rank = 2;
结果:

over: 在什么条件之上。
partition by e.sclassno: 按年级编号划分(分区)。
order by e.sage desc: 按年龄从高到低排序(使用rank()/dense_rank() 时,必须要带order by否则非法)
rank()/dense_rank(): 分级
rank(): 跳跃排序,如果有两个第一级时,接下来就是第三级。
dense_rank(): 连续排序,如果有两个第一级时,接下来仍然是第二级
select e.*
from (select e.*,
dense_rank() over(partition by e.sclassno order by e.sage desc) rank
from l_student_info_tbl e) e
where e.rank = 4;

select e.*
from (select e.*,
rank() over(partition by e.sclassno order by e.sage desc) rank
from l_student_info_tbl e) e
where e.rank = 4;
看下子句,无rank=4的数据

Oracle高级查询之over(partition by...)的更多相关文章
- oracle高级查询(实例基于scott用户四张表)
oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...
- Oracle高级查询之OVER
注释:为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的 oracel的高级用法:rank()/dense_rank() over(partition by ...orde ...
- Oracle高级查询,over 用法
注:标题中的红色order by是说明在使用该方法的时候必须要带上order by. 一.rank()/dense_rank() over(partition by ...order by ...) ...
- Oracle 高级查询
Oracle SQL 一些函数用法 以下sql环境都是在 Oracle 11g/scott完成 Group by 与GROUP BY一起使用的关建字 GROUPING,GROUP SET,ROLLUP ...
- Oracle高级查询之CONNECT BY
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. Oracle中的select语句可以用start with ... connect by prior ...子句实现递 ...
- Oracle高级查询、事物、过程及函数
一.SQL函数 1.分类:单行函数(日期.数值.转换.字符等),多行函数,也称为分组函数(max.min.avg.sum.row_number.rank等). 2.数值函数 abs(n):求数字n的绝 ...
- Oracle高级查询,事物,过程及函数
一 数值函数 数值 abs,ceil,floor,round,trunc字符串 instr,substr SQL>SELECT 'ABS':'|| ABS(-12.3) FROM DUAL; 运 ...
- Oracle 高级查询、事物、过程及函数
一.Sql函数 1.数值函数(输入参数和返回值都是数值型,多数函数精确到38位) --多少次方 ,) from dual; --开方 ) from dual; --绝对值 ) from dual; - ...
- oracle高级查询练习题
1. 列出员工表中每个部门的员工数和部门编号 Select deptno,count(*) from emp group by deptno; 补充1:列出员工表中,员工人数大于3的部门编号和员工人 ...
随机推荐
- #WEB安全基础 : HTTP协议 | 0x9 GET和POST请求以及请求URI的方式
请求URI的方式 1.URI为完整的请求URI GET http://hackr.jp/index.htm HTTP/1.1 2.在首部字段Host中写明域名或IP地址 GET/index.htm H ...
- php中双$符 及一些基础知识
双$$符号表示可变变量 如 $a = "b", $b = 'c'; echo $$a 此时 $$a=>$($a) =>$b 输出的值就应该为c; 变量传应用值$b ...
- js统计字数
<div class="toolcode"> <style type="text/css"> .num { font-size: 14p ...
- redis 分页
redis 分页 > rpush a (integer) > rpush a (integer) > rpush a (integer) > rpush a (integer) ...
- 使用HTML meta no-cache标签来禁用缓存
使用HTML meta no-cache标签来禁用缓存 如何完美滴使浏览器访问一个 HTML 页面时禁用缓存?在测试某个 SPA 项目时,发现更改后 Chrome 浏览器页面刷新还是使用之前的版本.经 ...
- linux 定时任务,压缩 日志,并删除掉 指定日期之前的 日志
sh文件 #!/bin/sh myPath="/var/www/Client/storage/logs/" myFile="lumen.log" cd $myP ...
- mysql的sql_mode设置
参考官方文档: mysql可以为不同的客户端设置不同的sql_mode,并且每个应用能够设置他自己的会话级别的sql_mode.sql_mode会影响sql语法以及mysql显示数据的正确性. Whe ...
- windows eclipse直接访问远程linux hadoop开发环境配置(符合实际开发的做法)
CDH 5.x搭建请参考CentOS 7离线安装CDH 5.16.1完全指南(含各种错误处理). 如果使用的是cloudera quickstart vm,则只能在linux服务器中使用eclipse ...
- 组装一台PRUSA I3打印机
闲来无事,又搞了台机.这样下去顶不住了.草. 还是咸鱼购买,但是这台收到的时候比我以前任何一台都要散,几乎重新装了一台. 此处省略收到货时候的零件图,省略装机图. 不得不提的是,原机用的山寨melzi ...
- chrome浏览器导出文件提示病毒扫描失败
转自https://zhidao.baidu.com/question/758059392558639324.html 1.windows+R,打开运行 2.输入regedit.exe,确定,打开注册 ...