小計を求めるには、GROUP BY ROLLUPを使用します。
サンプル
こんな感じのテーブルを対象とします。
部 | 課 | 名前 |
---|---|---|
営業部 | 1課 | Aさん |
営業部 | 1課 | Bさん |
営業部 | 2課 | Cさん |
営業部 | 3課 | Dさん |
営業部 | 3課 | Eさん |
開発部 | 1課 | Fさん |
開発部 | 1課 | Gさん |
開発部 | 1課 | Hさん |
開発部 | 2課 | Iさん |
例)M_SHAINテーブルから、小計で部・課単位の人数を表示する
1 2 3 4 5 6 7 8 9 10 |
SELECT 部 ,課 ,COUNT(*) AS 人数 ,GROUPING_ID(部, 課) AS フラグ FROM M_SHAIN GROUP BY ROLLUP(部, 課) ; |
- 実行例
- 部 課 人数 フラグ ------- ----- --------- ------- 営業部 1課 2 0 営業部 2課 1 0 営業部 3課 2 0 営業部 5 1 ←この行が小計行です。 開発部 1課 3 0 開発部 2課 1 0 開発部 4 1 ←この行が小計行です。 9 3 ←この行が総合計行です。
解説
- 小計を求めたい時にとても便利です。
- GROUPING_ID列で、データ行か合計行かを判定できます。
('1'となっている行が小計行、'3'となっている行が総合計行です)