简单的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的高级用法的更多相关文章

  1. Oracle中group by用法

    Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总 ...

  2. 分组函数group by和Oracle中分析函数partition by的用法以及区别

    1.分组函数group by和Oracle中分析函数partition by的用法以及区别 2.开窗函数.

  3. Oracle中 (+)与left join 的用法区别

    Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...

  4. oracle 中GROUP BY的用法

    转自:http://blog.csdn.net/basenet855x/article/details/6694150 问题: select item.itemnum,item.in1,item.in ...

  5. Oracle中的rownum,ROWID的 用法

    1.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的 ...

  6. (转)Oracle中的rownum,ROWID的 用法

    场景:在书写oracle的sql语句时候,如果语句不存在主键,需要删除几条重复的记录,这个时候如果不知道oracle中的伪列,就需要把所有的重复记录先删除,再插入.这样做好麻烦,可以通过伪列来定位记录 ...

  7. Jmeter 中JSON Path Extractor高级用法

    好久没玩jemter了,由于项目原因又重新拾起.在使用JSON Path Extractor(jmeter 4.0已经默认支持了,4.0以下要自行安装插件)时,可以进行条件过滤,不用再自行写shell ...

  8. Oracle中group by 的扩展函数rollup、cube、grouping sets

    Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...

  9. Python切片中的误区与高级用法

    众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片 ...

随机推荐

  1. lightoj 1125【背包·从n个选m个】

    题意: 给你 n 个背包,然后给你两个数,D,M,问你从n个里面挑M个出来,有多少种方法能够整除D: 思路: 试想我先不挑M个出来的话,仅仅是构造一个D的倍数,其实就是构造一个数的话, 其实就是个递推 ...

  2. oracle的日期数据类型

    https://blog.csdn.net/qq_33573235/article/details/78154928(转)

  3. AndroidStudio给Unity打jar包

    环境: AndroidStudio2.0 Unity4.68 AS打jar包 新建空工程 删除无用的MainActivity等. 新建Module Module选择Android Library,起名 ...

  4. Springboot整合elasticSearch的官方API实例

    前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...

  5. PJzhang:国内常用威胁情报搜索引擎说明

    猫宁!!! 参考链接: https://www.freebuf.com/column/136763.html https://www.freebuf.com/sectool/163946.html 如 ...

  6. djangoForm组件

    https://www.cnblogs.com/jabbok/p/9273786.html 在之前学习了html form信息传递到django,然后进行处理,但是这很不方便. django有自己的组 ...

  7. POP页面暂时不销毁

    摘要:我们经常使用的QQ空间,当我们短时间内两次进入页面的时候,页面是没有重新创建的,不光是缓存的数据,是整个页面都没有变.我们在开发中可能也会有这样的需求.开始的时候,想的思路是这样的:用定时器,将 ...

  8. morphia(2)-添加

    1.简单 @Test public void add() throws Exception { final Employee em = new Employee("遥远2",500 ...

  9. 18000 Two String 暴力。——— 读题

    http://acm.scau.edu.cn:8000/uoj/mainMenu.html 18000 Two String 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 ...

  10. 灰度共生矩阵GLCM分析

    纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析.纹理分析在遥感图像.X射线照片.细胞图像判读和处理方面有广泛的应用.关于纹理,还没有一个统一的数学模型.它起源于表征纺织品表面性质的纹理概念,可以 ...