文档章节

黑马-程序员Oracle分组函数和topN查询

victorruan
 victorruan
发布于 2014/07/16 09:52
字数 562
阅读 39
收藏 0

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

 

 --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。所以被无情的抛弃了。紧接着再拿出一条数据,结果当然还是被抛弃。

--总结一下其核心思想:就是将伪列rownom想办法实例为一个可操作的固有列,通过这个固有列来达到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;

--以上查询也是分页查询的例子

 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

本文转载自:http://www.cnblogs.com/victorruan/archive/2012/12/22/2828867.html

victorruan
粉丝 0
博文 13
码字总数 0
作品 0
徐汇
私信 提问
Oracle的sql (一 )

Oracle体系结构: 数据库 ----> 实例(orcl) ---> 表空间(逻辑单位)(用户) ---> 数据文件(物理单位) 地球 ----> 国家 ---> 省份(省长,公民) ---> 中粮,山川河流 Oracle和mysql区别: 收费, 不开...

勤劳的开发者px
2017/10/23
13
0
PostgreSQL Oracle 兼容性 - Analysis函数之keep

标签 PostgreSQL , Oracle , 分析函数 , 窗口函数 , keep 背景 Oracle 分析函数KEEP,类似OVER的语法结构(当然,含义与之不同)。keep可以用于普通的查询,也可以用于分组聚合,同时亦可用于...

德哥
2018/06/21
0
0
使用云监控实现GPU云服务器的GPU监控和报警(下)-云监控插件监控

目录 使用云监控实现GPU云服务器的GPU监控和报警(上) - 自定义监控 使用云监控实现GPU云服务器的GPU监控和报警(下)-云监控插件监控 1 背景 上一篇文章我们介绍了如何使用阿里云云监控服务...

撷峰
2018/07/13
0
0
Oracle 之group by

group by 子句是将查询结果表按某一列或者多列分组,值相等的为一组。对查询结果的分组是为了细化sum,max之类函数的作用对象。如果未对查询结果分组,这类函数将作用于整个查询结果。 例如:...

code_free
2012/10/30
38
0
【备忘】2017年黑马【淘宝店铺装修实战操作视频】全套无加密

2017年黑马【淘宝店铺装修实战操作视频】全套无加密 简介: 淘宝装修,对于一个好的店铺来讲,是至关重要的,因为客户只能从网上的文字和图片来了解您,了解产品,所以做得好能增加用户的信任...

qq_38155396
2017/07/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https://blog.51cto.com/kaliarch/2044618 一、概述 1.1 背景 ......

linjin200
30分钟前
5
0
CDH6.0.1集成tez-0.9.1计算引擎

参考文章: https://www.jianshu.com/p/9fb9f32e1f0f https://www.baidu.com/link?url=OgpwasnZi7H1dySN2T111sseEWDBaCCTC3DFV61G7756YbrkJCA8Y3UFaueyqnfN&wd=&eqid=daeb8b3500049cf3000000......

Sheav
32分钟前
4
0
Vue内置指令的使用

v-model(数据绑定) v-model常用于表单数据的双向绑定,它本质上是一个语法糖。它主要的有两种应用: 在文本框、多行文本、input的下拉框、单选按钮、复选框中的应用 <div id="app"> ...

凌兮洛
32分钟前
5
0
外部来源应用检查-烦死了,终于找到解决设置了

Android 连接usb调试应用的时候: 华为关闭方法:1、设置-安全-更多安全设置,关掉外部来源应用检查。2、设置-系统-开发人员选项-关闭“监控ADB安装应用” 不知道OPPO 怎么关闭的?...

QGlaunch
33分钟前
4
0
6个K8s日志系统建设中的典型问题,你遇到过几个?

作者 | 元乙 阿里云日志服务数据采集客户端负责人,目前采集客户端 logtail 在集团百万规模部署,每天采集上万应用数 PB 数据,经历多次双 11、双 12 考验。 导读:随着 K8s 不断更新迭代,使...

阿里云官方博客
35分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部