ORACLE GROUPING函数的使用

php中文网
发布: 2016-06-07 15:03:58
原创
1731人浏览过

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROU

欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入

    GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。

    关于ROLLUP和CUBE函数的使用,请参见我的另一篇文章。

    1、在ROLLUP中对单列使用GROUPING()

    SQL> select division_id,sum(salary)

    2  from employees2

    3  group by rollup(division_id)

    4  order by division_id;

    DIV SUM(SALARY)

    --- -----------

    BUS     1610000

    OPE     1320000

    SAL     4936000

    SUP     1015000

    8881000

    加上GROUPING来看看

    SQL> select grouping(division_id),division_id,sum(salary)

    2  from employees2

    3  group by rollup(division_id)

    4  order by division_id;

    GROUPING(DIVISION_ID) DIV SUM(SALARY)

    --------------------- --- -----------

    0 BUS     1610000

    0 OPE     1320000

    0 SAL     4936000

    0 SUP     1015000

    1         8881000

    可以看到,为空的地方返回1,非空的地方返回0。

    2、使用CASE转换GROUPING()的返回值

    可能你会觉得前面的0和1太枯燥了,代表不了任何意义,说白了就是不够人性化,呵呵。这个时候我们可以使用CASE来转换为一些有意义的值。

    SQL> select

    2  case grouping(division_id)

    3  when 1 then 'all divisions'

    4  else division_id

    5  end as div,

    6  sum(salary)

AirOps
AirOps

AirOps帮助业务团队使用正确的数据创建表、文档和工具

AirOps 19
查看详情 AirOps

    7  from employees2

    8  group by rollup(division_id)

    9  order by division_id;

    DIV           SUM(SALARY)

    ------------- -----------

    BUS               1610000

    OPE               1320000

    SAL               4936000

    SUP               1015000

    all divisions     8881000

    3、使用CASE和GROUPING()转换多个列的值

    SQL> select

    2  case grouping(division_id)

    3  when 1 then 'all divisions'

    4  else division_id

    5  end as div,

    6  case grouping(job_id)

    7  when 1 then 'all jobs'

    8  else job_id

    9  end as job,

    10  sum(salary)

    11  from employees2

    12  group by rollup(division_id,job_id)

    13  order by division_id,job_id;

    DIV           JOB      SUM(SALARY)

    ------------- -------- -----------

    BUS           MGR           530000

    BUS           PRE           800000

    BUS           WOR           280000

    BUS           all jobs     1610000

    OPE           ENG           245000

    OPE           MGR           805000

    OPE           WOR           270000

[1] [2] 

ORACLE GROUPING函数的使用

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号