2006年4月 2日

[mysql 12905] Re: 集計データ取得のためのSQL文の記述方法

とみたです。

On Sun, 02 Apr 2006 17:35:22 +0900
樋口聡 wrote:

> MySQLに蓄積された情報を集計しようとSQL文を書いていて、自分の希望する結果
> を一つのSQL文で実現できなかったので、ご存知の方がいらっしゃいましたら教
> えていただけませんか?

>
> テーブル定義:
> id int auto_increment
> email varchar(128) -- メールアドレス
> channel tinyint default 0 -- 応募経路
> create_date timestamp default null -- 作成日時
>
> 蓄積されているデータ:
> id email channel create_date
> 1 abc1@xxxxx 0 20060301185634
> 2 abc2@xxxxx 1 20060302120503
> 3 abc3@xxxxx 0 20060302190945
> 4 abc4@xxxxx 2 20060303080754
> 5 abc5@xxxxx 0 20060303101234
> 6 abc6@xxxxx 1 20060303112351
> 7 abc7@xxxxx 2 20060303121223
> とします。
> このとき集計データとして
> DATE CHANNEL TOTAL
> 0 1 2
> ---------- ------ ------- ------- -------
> 20060301 1 0 0 1
> 20060302 1 1 0 2
> 20060303 1 1 2 4
> と出力したいのです。

こんな感じでどうでしょうか。

mysql> select date(create_date) date,sum(if(channel=0,1,0)) c_0,sum(if(channel=1,1,0)) c_1,sum(if(channel=2,1,0)) c_2,count(*) total from d group by date;
+------------+------+------+------+-------+
| date | c_0 | c_1 | c_2 | total |
+------------+------+------+------+-------+
| 2006-03-01 | 1 | 0 | 0 | 1 |
| 2006-03-02 | 1 | 1 | 0 | 2 |
| 2006-03-03 | 1 | 1 | 2 | 4 |
+------------+------+------+------+-------+

# なんかイマイチかも…。

--
とみたまさひろ
日本MySQLユーザ会 http://www.mysql.gr.jp

投稿者 xml-rpc : 2006年4月 2日 20:46
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/34331
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。