grouping 函數確定分組級別的嵌套,返回 0 表示最外層分組,返回 1 表示內部分組。可用于識別最外層分組、計算聚合函數結果和基于分組創建條件。
Oracle 中的 GROUPING 函數
GROUPING 函數用于標記聚合函數計算中的分組級別。它返回一個值,表示該行是否屬于嵌套最深的分組。
語法
<code>GROUPING(expr)</code>
登錄后復制
其中:
expr 是指定分組范圍的列或表達式。
用法
GROUPING 函數可用于:
識別最外層分組中的行。
僅在最外層分組中計算聚合函數的結果。
創建基于分組層次結構的條件。
返回值
GROUPING 函數返回以下值:
0:如果行屬于嵌套最深的分組。
1:如果行屬于內部分組。
示例
<code>SELECT department_id, job_id, SUM(salary) AS total_salary, GROUPING(job_id) AS group_level FROM employee GROUP BY department_id, job_id;</code>
登錄后復制
結果:
department_id | job_id | total_salary | group_level |
---|---|---|---|
10 | 20 | 60000 | 0 |
10 | 30 | 40000 | 0 |
10 | 40 | 20000 | 1 |
20 | 50 | 50000 | 0 |
20 | 60 | 30000 | 1 |
在該示例中,group_level 列指示:
department_id 和 job_id 都屬于最外層分組(group_level 為 0)。
department_id 為外層分組,而 job_id 為內層分組(group_level 為 1)。