- ベストアンサー
SQL カラムの値ごとの集計
例えばテーブル名test01にカラムhogeとstatがあるとします。 statにはaまたはbの値が入ってます。 XXXX a XXXX b XXXX a XXXX a YYYY a YYYY b test01のテーブルが上記の様な場合、以下の様に集計したいです。 hoge a b (ヘッダ) XXXX 3 1 YYYY 1 1 どのようにSQLを書いたら良いか教えて下さい。 以上、よろしくご指導の程お願い申し上げます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SQLの種類によっては以下でもいけます select hoge,sum(stat='a') as a,sum(stat='b') as b from test01 group by hoge; なおcountでやるならnullを利用します select hoge , count(if(stat = 'a' ,0,null)) as a , count(if(stat = 'b' ,0,null)) as b from test01 group by hoge; もうすこし複雑になってくるとピボットテーブルという処理用のテーブルを 用意すると効率的に処理ができます
その他の回答 (1)
- yamada_g
- ベストアンサー率68% (258/374)
回答No.1
select hoge , sum(case when stat = 'a' then 1 else 0 end) as a , sum(case when stat = 'b' then 1 else 0 end) as b from test01 group by hoge; でどうでしょうか。
質問者
お礼
yamada_gさん、ご回答ありがとうございました。 これでできました。
お礼
yambejpさん、ご回答ありがとうございました。 大変参考になりました。