[前][次][番号順一覧][スレッド一覧]

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]