GROUPING 函数是 Oracle 数据库中的一个分析函数,它用于确定在分组查询中哪些列是非空的
在 Oracle 12c 及更高版本中,GROUPING 函数支持 GROUPING SETS、CUBE 和 ROLLUP 子句。这些子句允许你创建更复杂的分组查询,而不仅仅是基本的 GROUP BY 子句。
以下是使用 GROUPING 函数的一个示例:
SELECT deptno, job, COUNT(*)
FROM emp
GROUP BY GROUPING SETS ((deptno), (job), ());
在这个示例中,我们使用 GROUPING SETS 子句创建了三个分组集:按部门编号分组、按工作分组以及没有分组(总计)。GROUPING 函数将返回一个值,该值指示每个分组集中哪些列是非空的。例如,如果 deptno 和 job 都是非空的,那么 GROUPING(deptno, job) 将返回 0;如果只有 deptno 是非空的,那么 GROUPING(deptno, job) 将返回 1。
总之,GROUPING 函数在 Oracle 最新版本中的新特性主要是与 GROUPING SETS、CUBE 和 ROLLUP 子句一起使用,以支持更复杂的分组查询。