アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えばテーブル名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を書いたら良いか教えて下さい。

以上、よろしくご指導の程お願い申し上げます。

A 回答 (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;

もうすこし複雑になってくるとピボットテーブルという処理用のテーブルを
用意すると効率的に処理ができます
    • good
    • 0
この回答へのお礼

yambejpさん、ご回答ありがとうございました。

大変参考になりました。

お礼日時:2013/07/29 16:02

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;

でどうでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/29 16:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!