mysql:12905
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Sun, 2 Apr 2006 20:46:18 +0900
Subject: [mysql 12905] Re: 集計データ取得のためのSQL文の記述方法
とみたです。 On Sun, 02 Apr 2006 17:35:22 +0900 樋口聡 <satoshi@xxxxxxxxxx> 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@xxxxxxxxxx 0 20060301185634 > 2 abc2@xxxxxxxxxx 1 20060302120503 > 3 abc3@xxxxxxxxxx 0 20060302190945 > 4 abc4@xxxxxxxxxx 2 20060303080754 > 5 abc5@xxxxxxxxxx 0 20060303101234 > 6 abc6@xxxxxxxxxx 1 20060303112351 > 7 abc7@xxxxxxxxxx 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 | +------------+------+------+------+-------+ # なんかイマイチかも…。 -- とみたまさひろ <tommy@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp
12903 2006-04-02 17:35 [樋口聡 <satoshi@xxxx] 集計データ取得のためのSQL文の記述方法 -> 12905 2006-04-02 20:46 ┗[とみたまさひろ <tomm] 12906 2006-04-03 11:16 ┗[樋口聡 <satoshi@xxxx]