Group分组及其扩展总结(二)

 1 --1.Grouping 函数可以接受一列,返回0或者1 如果列值为空那么返回1 否则返回0
 2 select grouping(a.division_id),a.division_id, sum(a.salary)
 3   from employees2 a
 4  group by rollup(a.division_id)
 5  order by a.division_id
 6  
 7  运行结果为:
 8   GROUPING(A.DIVISION_ID)    DIVISION_ID    SUM(A.SALARY)
 9 1    0    BUS    1610000
10 2    0    OPE    1320000
11 3    0    SAL    4936000
12 4    0    SUP    1015000
13 5    1          8881000
14 
15 --加入grouping后的效果
16 select case grouping(a.division_id)
17          when 0 then a.division_id
18          when 1 then '总计'
19        end 部门,
20        sum(a.salary)
21   from employees2 a
22  group by rollup(a.division_id)
23  order by a.division_id
24 运行结果为:
25   部门    SUM(A.SALARY)
26 1    BUS    1610000
27 2    OPE    1320000
28 3    SAL    4936000
29 4    SUP    1015000
30 5    总计    8881000
31 
32 注意事项:grouping仅在rollup和cube子句中使用得到,用于将空值转换为一个有意义的值
 1 --2.使用case和grouping转换多个列的值
 2 select case grouping(b.division_id)
 3          when 1 then 'all division'
 4          else b.division_id
 5          end as div_id,
 6        case grouping(b.job_id)
 7          when 1 then 'all jobs'
 8          else b.job_id
 9          end as job, 
10        sum(b.salary)
11   from employees2 b
12   group by rollup(b.division_id,b.job_id)
13   order by b.division_id, b.job_id
14 
15 运行结果:
16 DIV_ID    JOB    SUM(B.SALARY)
17 1    BUS    MGR    530000
18 2    BUS    PRE    800000
19 3    BUS    WOR    280000
20 4    BUS    all jobs    1610000
21 5    OPE    ENG    245000
22 6    OPE    MGR    805000
23 7    OPE    WOR    270000
24 8    OPE    all jobs    1320000
25 9    SAL    MGR    4446000
26 10    SAL   WOR    490000
27 11    SAL   all jobs    4936000
28 12    SUP   MGR    465000
29 13    SUP   TEC    115000
30 14    SUP   WOR    435000
31 15    SUP   all jobs    1015000
32 16    all   divisionall jobs    8881000
 1 --3.grouping和cube联合使用
 2 select case grouping(b.division_id)
 3          when 1 then 'all division'
 4          else b.division_id
 5          end as div_id,
 6        case grouping(b.job_id)
 7          when 1 then 'all jobs'
 8          else b.job_id
 9          end as job, 
10        sum(b.salary)
11   from employees2 b
12   group by cube(b.division_id,b.job_id)
13   order by b.division_id, b.job_id
14 
15 运行结果
16 
17   DIV_ID    JOB    SUM(B.SALARY)
18 1    BUS    MGR    530000
19 2    BUS    PRE    800000
20 3    BUS    WOR    280000
21 4    BUS    all jobs    1610000
22 5    OPE    ENG    245000
23 6    OPE    MGR    805000
24 7    OPE    WOR    270000
25 8    OPE    all jobs    1320000
26 9    SAL    MGR    4446000
27 10    SAL    WOR    490000
28 11    SAL    all jobs    4936000
29 12    SUP    MGR    465000
30 13    SUP    TEC    115000
31 14    SUP    WOR    435000
32 15    SUP    all jobs    1015000
33 16    all division    ENG    245000
34 17    all division    MGR    6246000
35 18    all division    PRE    800000
36 19    all division    TEC    115000
37 20    all division    WOR    1475000
38 21    all division    all jobs    8881000

 

 1 --4.Grouping sets子句只返回小计信息
 2 select case grouping(b.division_id)
 3          when 1 then 'all division'
 4          else b.division_id
 5          end as div_id,
 6        case grouping(b.job_id)
 7          when 1 then 'all jobs'
 8          else b.job_id
 9          end as job, 
10        sum(b.salary)
11   from employees2 b
12   group by grouping sets(b.division_id,b.job_id)
13   order by b.division_id, b.job_id
14 运行结果
15        DIV_ID    JOB    SUM(B.SALARY)
16 1    BUS    all jobs    1610000
17 2    OPE    all jobs    1320000
18 3    SAL    all jobs    4936000
19 4    SUP    all jobs    1015000
20 5    all division    ENG    245000
21 6    all division    MGR    6246000
22 7    all division    PRE    800000
23 8    all division    TEC    115000
24 9    all division    WOR    1475000

 

转载于:https://www.cnblogs.com/zhanglt/archive/2012/11/04/2753392.html

基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高设计项目,评审平均达96.5。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均达到96.5,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值