|
スポンサード リンク
ROLLUPやCUBEで算出した、小計行とグループ化された集計行を区別するには、GROUPING関数、または、GROUPING_ID関数を使用する。
GROUPING( 小計項目 ) |
小計行の場合は「1」、グループ化された集計行の場合は「0」を返します。 |
GROUPING_ID( 小計項目1,
[小計項目2,・・・] ) |
小計行の場合は「1以上」、グループ化された集計行の場合は「0」を返します。 |
サンプル表「emp」データ
|
SQL> select * from emp01;
EMP_ID DEPT_ID EMP_NAME YEARS SALARY
------ ------ ---------- ---------- ----------
E01 D01 なまえ1 3 150
E02 D02 なまえ2 7 200
E03 D03 なまえ3 7 300
E04 D02 なまえ4 7 400
E05 D03 なまえ5 3 500
E06 D02 なまえ6 3 600 |
例1) 列「dept_id」、「years」別に、列「salary」の集計を取得し、列「dept_id」別に小計を算出する。
最後に合計を算出する。(GROUPING)
|
SQL> select
2 dept_id, years, sum( salary ), grouping( years )
3 from emp01
4 group by rollup( dept_id, years );
DEPT_ID YEARS SUM(SALARY) GROUPING(YEARS)
------ ------ ----------- ---------------
D01 3 150 0
D01 150 1 −−−−− 小計行
D02 3 600 0
D02 7 600 0
D02 1200 1 −−−−− 小計行
D03 3 500 0
D03 7 300 0
D03 800 1 −−−−− 小計行
2150 1 −−−−− 合計行
|
※GROUPING関数には引数の指定は1つのみ可能。
グルーピングの最小単位の項目(上記例では「years」)を指定する。
スポンサード リンク
例2) 例1で、集計行と合計行のみ表示する。(GROUPING)
|
SQL> select
2 dept_id, years, sum( salary ), grouping( years )
3 from emp01
4 group by rollup( dept_id, years )
5 having grouping( years ) > 0;
DEPT_ID YEARS SUM(SALARY) GROUPING(YEARS)
------ ------ ----------- ---------------
D01 150 1
D02 1200 1
D03 800 1
2150 1
|
例3) 列「dept_id」、「years」別に、列「salary」の集計を取得し、列「dept_id」別に小計を算出する。
最後に合計を算出する。(GROUPING_ID)
|
SQL> select
2 dept_id, years ,sum( salary ), grouping_id( dept_id, years )
3 from emp01
4 group by rollup( dept_id, years );
DEPT_ID YEARS SUM(SALARY) GROUPING_ID(DEPT_ID,YEARS)
------ ------- ----------- --------------------------
D01 3 150 0
D01 150 1 −−−−− 小計行
D02 3 600 0
D02 7 600 0
D02 1200 1 −−−−− 小計行
D03 3 500 0
D03 7 300 0
D03 800 1 −−−−− 小計行
2150 3 −−−−− 合計行
|
例4) 例3で、集計行と合計行のみ表示する。(GROUPING_ID)
|
SQL> select
2 dept_id, years, sum( salary ), grouping_id( years )
3 from emp01
4 group by rollup( dept_id, years )
5 having grouping_id( years ) > 0;
DEPT_ID YEARS SUM(SALARY) GROUPING_ID(YEARS)
------ ------- ----------- ------------------
D01 150 1
D02 1200 1
D03 800 1
2150 1
|
スポンサード リンク
|