GROUPING函数

来源:互联网 发布:keep减肥软件下载 编辑:程序博客网 时间:2024/04/29 12:41

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。

        

0 0
原创粉丝点击