• ベストアンサー

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を書いたら良いか教えて下さい。 以上、よろしくご指導の程お願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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; もうすこし複雑になってくるとピボットテーブルという処理用のテーブルを 用意すると効率的に処理ができます

kingfruits
質問者

お礼

yambejpさん、ご回答ありがとうございました。 大変参考になりました。

その他の回答 (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; でどうでしょうか。

kingfruits
質問者

お礼

yamada_gさん、ご回答ありがとうございました。 これでできました。