grouping 函數(shù)確定分組級(jí)別的嵌套,返回 0 表示最外層分組,返回 1 表示內(nèi)部分組。可用于識(shí)別最外層分組、計(jì)算聚合函數(shù)結(jié)果和基于分組創(chuàng)建條件。
Oracle 中的 GROUPING 函數(shù)
GROUPING 函數(shù)用于標(biāo)記聚合函數(shù)計(jì)算中的分組級(jí)別。它返回一個(gè)值,表示該行是否屬于嵌套最深的分組。
語法
<code>GROUPING(expr)</code>
登錄后復(fù)制
其中:
expr 是指定分組范圍的列或表達(dá)式。
用法
GROUPING 函數(shù)可用于:
識(shí)別最外層分組中的行。
僅在最外層分組中計(jì)算聚合函數(shù)的結(jié)果。
創(chuàng)建基于分組層次結(jié)構(gòu)的條件。
返回值
GROUPING 函數(shù)返回以下值:
0:如果行屬于嵌套最深的分組。
1:如果行屬于內(nèi)部分組。
示例
<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>
登錄后復(fù)制
結(jié)果:
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 為內(nèi)層分組(group_level 為 1)。