大家好,欢迎来到IT知识分享网。
GROUPING函数
GROUPING函数既可以与CUBE操作一起使用, 也可以与ROLLUP操作一起使用, 它能帮助你理解概要值是怎样产生的。
GROUPING函数使用一个单独的列表示。在GROUPING函数中的expr必须匹配一个GROUP BY子句中的表达式, 该函数的返回值0或1。
GROUPING函数的返回值用于:
- 确定给定小计的聚合级别; 即, 小计基于单个分组还是多个分组
- 确定在结果集行的表达式列中产生空值的原因:
- 空值来自基表(存储的NULL)
- 空值由ROLLUP/CUBE创建(作为作用于表达式的组函数的结果)
- 基于表达式的GROUPING函数返回0, 表示下面的情况:
- 表达式已经被用于计算总值
- 在表达式列中的空值是一个存储的NULL值
- 基于表达式的GROUPING函数返回1, 表示下面的情况:
- 表达式没有被用于计算总值
- 在表达式列中的空值由ROLLUP或CUBE作为分组结果创建
一个GROUPING函数的例子
在幻灯片的例子中, 考虑第一行的合计值4400(标记1)。该合计值是部门10中工作岗位AD_ASST的合计工资。 该合计值的计算必须用列DEPARTMENT_ID和JOB_ID进行计数, 因此, 两个表达式GROUPING(DEPARTMENT_ID)和GROUPING(JOB_ID)都返回0值。
考虑第二行的合计值4400(标记2)。该值是部门10的合计工资, 由列DEPARTMENT_ID计数进行计算而得, 因此GROUPING(DEPARTMENT_ID)返回值为0。因此列JOB_ID不参与该值的计数, 所以GROUPING(JOB_ID)返回值为1。你可以在第五行观察到类似输出。
在最后一行, 考虑合计值23400(标记3)。这是那些DEPARTMENT_ID小于50的部门的合计工资。为了计算该合计值, 列DEPARTMENT_ID和JOB_ID都不参与计数, 因此GROUPING(DEPARTMENT_ID)和GROUPING(JOB_ID)都返回值1。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/14151.html