ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
クロス集計する(CUBE)
スポンサード リンク

クロス集計するには、GROUP BY句にCUBE関数を使用する

GROUP BY CUBE(集計項目1,
             [集計項目2,・・・])
集計項目でクロス集計する


 サンプル表「emp」データ
SQL> select * from emp;

EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E01 D01 J01  名字1     名前1     100
E02 D01 J01  名前2     名前2     250
E03 D02 J02  名前3     名前3     200
E04 D02 J03  名前4     名前4     220
E05 D02 J03  名前5     名前5     130
E06 D03 J03  名前6     名前6     150


例1) 列「dept_id」と「job_id」別に列「salary」をクロス集計します。
SQL> select
  2   dept_id,job_id,sum(salary)
  3  from emp
  4   group by cube(dept_id,job_id);

DEP JOB  SUM(SALARY)
---  ---  -----------
        1030
    J01  350
    J02  200
    J03  480
D01      350
D01  J01  350
D02      530
D02  J02  200
D02  J03  330
D03       150
D03  J03  150

上記結果を表にすると以下のようになります
  J01 J02 J03  
D01 350     350
D02   200 330 530
D03     150 150
  350 200 480  


スポンサード リンク


レコード件数を取得する( COUNT )
最大値を取得する( MAX )
平均値を取得する( AVG )
最小値を取得する( MIN )
グループ単位に集計する( SUM、GROUP BY )
グループ単位に集計結果の値から指定条件でレコードを抽出する( HAVING )
ランキング(仮説ランク)を取得する( RANK、DENSE_RANK )
パーセントランク(仮説ランク)を取得する( PERCENT_RANK )
ソートしたレコードの先頭行に集計関数を使用する( KEEP、FIRST )
ソートしたレコードの最終行に集計関数を使用する( KEEP、LAST )
小計を計算する( ROLLUP )
クロス集計する( CUBE )
小計行とグループ化された集計行を区別する( GROUPING、GROUPING_ID )
標準偏差を取得する( STDDEV )
累積標準偏差を取得する( STDDEV_SAMP )
母集団標準偏差を取得する( STDDEV_POP )
分散を取得する( VARIANCE )
累積分散を取得する( VAR_SAMP )
母集団分散を取得する( VAR_POP )
中央値を取得する( MEDIAN )
相関係数を取得する( CORR )

SQL(DML) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ