zoukankan      html  css  js  c++  java
  • 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表示重复。

    感觉很实用!!!以后项目中可以用用。。。

  • 相关阅读:
    MongoDB 释放磁盘空间 db.runCommand({repairDatabase: 1 })
    RK 调试笔记
    RK Android7.1 拨号
    RK Android7.1 移植gt9271 TP偏移
    RK Android7.1 定制化 itvbox 盒子Launcher
    RK Android7.1 双屏显示旋转方向
    RK Android7.1 设置 内存条作假
    RK Android7.1 设置 蓝牙 已断开连接
    RK Android7.1 进入Camera2 亮度会增加
    RK 3128 调触摸屏 TP GT9XX
  • 原文地址:https://www.cnblogs.com/thb-blog/p/7519384.html
Copyright © 2011-2022 走看看