- ベストアンサー
グループ集計と総合集計を行うには
以下のようなテーブルが存在します。 A B C 1 1 3 1 2 4 2 3 3 2 2 3 ・・・・ 求めたい事は、 ・Cの総合計 ・A列におけるCの合計 ・A&B列におけるCの合計 です。3回SQLをまわせばいい事かもしれませんが、行数がすさまじく多いので1回もしくは2回のSQLで上記の結果が得られればいいなと思っています。 何かいい案がありましたらご教授いただきたくよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1回答者です。 #1で示した集計結果行を、nullで判定するのでなく、0か1かで得られる記述もできますので、参考まで。 【SQL例】 select A,B,sum(c),grouping(A) as gA,grouping(B) as gAB from t1 group by A,B with rollup 【結果】・・・「-」はnull値です A B sum(c) gA gAB 1 1 3 0 0 1 1 4 0 0 1 - 7 0 1 →A=1の合計 2 2 3 0 0 2 3 3 0 0 2 - 6 0 1 →A=2の合計 - - 13 1 1 →総合計
その他の回答 (2)
- khazad-lefty
- ベストアンサー率44% (296/668)
Case文を使って Select Sum(case When A=0 then 1 else 0 end +case When B=0 then 1 else 0 end +case When C=0 then 1 else 0 end ) as total, Sum(case When A=0 then 1 else 0 end) as asum で出すとか…。
- chukenkenkou
- ベストアンサー率43% (833/1926)
group byでrollup指定する方法がありますが、いかがでしょうか? 【SQL例】 select A,B,sum(c) from t1 group by A,B with rollup 【結果】・・・「-」はnull値です A B sum(c) 1 1 3 1 1 4 1 - 7 →A=1の合計 2 2 3 2 3 3 2 - 6 →A=2の合計 - - 13 →総合計