oracle中group by的高级用法
简单的group by用法
select c1,sum(c2) from t1 where t1<> 'test' group by c1 having sum(c2)>100; |
rollup(多列)——上卷汇总,从最后一个汇总字段开始上卷汇总,一直到合计
select c1,c2,sum(c3) from t1 group by rollup(c1,c2) |
含义:
c1,c2分组合计
c1分组合计
总计
cube(多列)——组合汇总,以汇总字段的子集作为汇总条件汇总,包括合计
select c1,c2,sum(c3) from t1 group by cube(c1,c2) |
含义:
c1,c2分组合计
c1分组合计
c2分组合计
总计
grouping(单列名)只用于rollup和cube,单列名是rollup和cube中的一个列名,表示此记录的分组条件是否包含此列,1表示否,0表示是。
select decode(grouping(c1),1, 'all c1' ,c1) as first, decode(grouping(c2),1, 'all c2' ,c2) as second,sum(c3) from t1 group by cube(c1,c2) |
含义:使记录含义更清晰,而不是单纯的一个null值。
grouping sets(多列)——分列汇总,按参数中的各列分别汇总。
select c1,c2,sum(c3) from t1 group by grouping sets(c1,c2) |
含义:按c1和c2的分别作为group by的条件
grouping_id(多列)
是grouping()的扩展,相当于grouping_id(c1,c2)=(grouping(c1)||grouping(c2)表示的二进制)的值
可以表示分组的层级
group by语句可以同时使用普通列、rollup()和cube()等作为条件,如果一个列在不同地方出现了多次,结果集可以会重复。同时使用的含义是:普通列加上高级函数的每个结果作为group by的条件汇总,
group_id()函数,无参数,可以表示此分组记录是否重复,0表示第一次,1表示重复。
感觉很实用!!!以后项目中可以用用。。。
oracle中group by的高级用法的更多相关文章
- Oracle中group by用法
Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总 ...
- 分组函数group by和Oracle中分析函数partition by的用法以及区别
1.分组函数group by和Oracle中分析函数partition by的用法以及区别 2.开窗函数.
- Oracle中 (+)与left join 的用法区别
Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...
- oracle 中GROUP BY的用法
转自:http://blog.csdn.net/basenet855x/article/details/6694150 问题: select item.itemnum,item.in1,item.in ...
- Oracle中的rownum,ROWID的 用法
1.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的 ...
- (转)Oracle中的rownum,ROWID的 用法
场景:在书写oracle的sql语句时候,如果语句不存在主键,需要删除几条重复的记录,这个时候如果不知道oracle中的伪列,就需要把所有的重复记录先删除,再插入.这样做好麻烦,可以通过伪列来定位记录 ...
- Jmeter 中JSON Path Extractor高级用法
好久没玩jemter了,由于项目原因又重新拾起.在使用JSON Path Extractor(jmeter 4.0已经默认支持了,4.0以下要自行安装插件)时,可以进行条件过滤,不用再自行写shell ...
- Oracle中group by 的扩展函数rollup、cube、grouping sets
Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...
- Python切片中的误区与高级用法
众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片 ...
随机推荐
- 算法学习--Day10
今天开始了新一章的学习,前面的题目虽然做了几道,但是我觉得训练量仍然太小了.不过机试确实很多题目,并且难度也有所不同,所以要针对不同的题目进行专门的练习才好.题目类型有些多,等接下来我将搜索的题目写完 ...
- Codeforces712B【= =】
题意: 题意: 最少需要几步改变能够使得按照原序列的走法从起源走到起源: 思路: 长度奇数肯定不行 偶数的情况下.. 其实题意转变就是有4个数a,b,c,d,在最小的改变下,使a==b,c==d; 那 ...
- Unity IK(反向运动学)初探
http://blog.csdn.net/myarrow/article/details/44450199 1. 简介 IK与FK对应,正向运动学就是根骨骼带动节点骨骼运动.而反向运动学就是反过来,由 ...
- Puppet2d及教程
http://www.jianshu.com/p/e56c7f5e58ab manual http://www.unitymanual.com/thread-35754-1-1.html http:/ ...
- [Xcode 实际操作]二、视图与手势-(3)UIView视图的基本操作
目录:[Swift]Xcode实际操作 本文将实现视图的添加与删除,以及切换视图在父视图中的层次. import UIKit class ViewController: UIViewControlle ...
- AndroidTV开发
AndroidTV的开发其实和Android的开发是一样的,现在的电视机可以安装AnroidApp
- jstl标签库不起作用,直接输出表达式
引用jstl.jar包 在jsp页面添加<%@ page isELIgnored="false"%>即可
- mongodb vs redis(Tokyo Tyrant转)
* MongoDB vs Redis vs Tokyo Tyrant(原文链接:http://www.cnblogs.com/riceball/archive/2010/03/05/MongoDB_V ...
- C# 面向对象之3个基本特征
C#是面向对象的语言,每个面向对象语言都有3个基本特征: *封装----把客观的事物封装成类,并将类的内部实现隐藏,以保证数据的完整性. *继承----通过继承可以复用父类的代码. *多态----允许 ...
- ARP数据包
结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr结构外,还包含源主机和 ...