--COUNT , 如果数据库表的没有数据,count(*)返回的不是 null,而是 0
-- Avg,max,min,sum
--可使用 NVL()函数强制分组函数处理空值
select avg(nvl(comm, 0)) from emp;
--不允许在 WHERE 子句中使用分组函数。
select deptno, avg(sal)
from emp
where avg(sal) > 2000;
group by deptno;
--select 字段列表 from 表名 +where 子句 +group by 子句 +having 子句 +order by 子句
select deptno, job, avg(sal)
from emp
where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job
having avg(sal) > 1200
order by deptno,job;
--TopN查询
select * from emp where rownum=1 or rownum=2;
--1.排序,列出所有记录或前N条记录
select * from (select * from emp order by sal desc)
where rownum <= 5;
--2.排序,列出指定区间的记录
select 字段列表
from (select 字段列表 from 表名 order by 排序字段)
where rownum>=11 and rownum<=15
毫无疑问,这句查询语句执行后不会有任何结果。
首先rownum是ORACLE在我们查询时自动生成的一个从1开始计数的伪列(就是一个虚假的列,看起来不存在,但是却实实在在存在)
这个伪列的产生机理是这样:当我们进行查询操作时,数据库的记录一条一条拿出,并给词条记录自动生成伪列rownum,这里强调一下:rownum是从1开始计数的。
这里的查询条件有两个:rownum>=11 和rownum<=15,查询出的rownum是从1开始计数的,也就是拿出的记录rownum=1.它满足rownum<=15但是不满足rownum>=11。所以被无情的抛弃了。紧接着再拿出一条数据,结果当然还是被抛弃。
--总结一下其核心思想:就是将伪列rowno想办法实例为一个可操作的固有列,通过这个固有列来达到TOP N分析的第二种实现。
select * from(select rownum myno,a.* from (select * from emp order by sal desc) a) b where myno>=5 and myno<=10;
select * from (select rownum no,e.* from (select * from emp order by sal desc) e where rownum<=10 ) where no>=5;
--以上查询也是分页查询的例子
分享到:
相关推荐
oracle如何实现分组排序和统计、聚集,如何分组求top N,什么是over分析函数,row_number(),rank(),dense_rank()区别又是什么, 如何找到一条记录的前后值,这份文档写得太好了。
分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;26个分析函数;PLSQL开发笔记和小结;分析函数简述 ROW_NUMBER () OVER([partition_clause] order_by_clause) dense_rank在做排序时...
包含Oracle常用的高级函数,比如取前N名,每个分组的前N名等。 详细介绍Oracle分析函数(OVER、Rank、Dense_rank、row_number、Top/Bottom N、First/Last、NTile) ,窗口函数,报表函数
在前面《Oracle开发之分析函数(Rank、Dense_rank、row_number)》一文中,我们已经知道了如何为一批记录进行全排列、分组排列。假如被排列的数据中含有空值呢? 代码如下:SQL> select region_id, customer_id, ...
6.4.4 使用TOP子句 6.4.5 NULL的判断 6.5 模糊查询 6.5.1 使用LIKE运算符进行查询 6.5.2 使用“_”通配符进行查询 6.5.3 使用“%”通配符进行查询 6.5.4 使用“[]”通配符进行查询 6.5.5 使用“[^]”通配符进行查询...
实例067 利用选择控件实现复杂查询 85 2.6 ListView控件应用 87 实例068 ListView控件间的数据移动 87 实例069 将数据库数据添加到ListView控件 90 实例070 在ListView控件中实现修改功能 91 实例071 在...
实例067 利用选择控件实现复杂查询 85 2.6 ListView控件应用 87 实例068 ListView控件间的数据移动 87 实例069 将数据库数据添加到ListView控件 90 实例070 在ListView控件中实现修改功能 91 实例071 在...
实例067 利用选择控件实现复杂查询 85 2.6 ListView控件应用 87 实例068 ListView控件间的数据移动 87 实例069 将数据库数据添加到ListView控件 90 实例070 在ListView控件中实现修改功能 91 实例071 在...
实例067 利用选择控件实现复杂查询 85 2.6 ListView控件应用 87 实例068 ListView控件间的数据移动 87 实例069 将数据库数据添加到ListView控件 90 实例070 在ListView控件中实现修改功能 91 实例071 在...
函数一般在数据上执行,它给数据的转换和处理提供了方便。不同的DBMS提供的函数不同。 函数可能会带来系统的不可移植性(可移植性:所编写的代码可以在多个系统上运行)。 加入注释是一个使用函数的好习惯。 大多数...
│ │ 7.2.1 TOP n 实现的通用分页存储过程.sql │ │ 7.2.2 字符串缓存实现的通用分页存储过程.sql │ │ 7.2.3 临时表缓存实现的通用分页存储过程.sql │ │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql │...
54 <br>0075 用回溯法找出n个自然数中取r个数的全排列 55 <br>0076 约瑟夫环问题 56 <br>0077 猴子选大王 57 <br>0078 如何判断IP是否正确 57 <br>0079 如何将小写金额转换为大写金额 57...