[pgsql-jp: 31212] Re: 日付で集計
Takumi Kawase
kawase @ kawase-sd.com
2003年 10月 14日 (火) 00:41:33 JST
川瀬と申します。
以下のSQLで如何でしょうか
select
time,
sum( male ) as male_count,
sum( female ) as female_count
from (
select
TO_CHAR(regist_time,'YYYYMMDD') as time,
count( * ) as male,
null as female
from
user_mst
where
sex = 'm'
group by
time
union all
select
TO_CHAR(regist_time,'YYYYMMDD') as time,
null as male,
count( * ) as female
from
user_mst
where
sex = 'w'
group by
time
) as union_sex
group by
time
order by
time;
以下の様な結果が得られると思います。
kawase=> select * from user_mst;
regist_time | id | name | mail | sex
---------------------+----------+-------+-------+-----
2003-10-01 00:00:00 | 1 | name1 | mail1 | m
2003-10-01 00:00:00 | 2 | name2 | mail2 | w
2003-10-03 00:00:00 | 3 | name3 | mail3 | m
2003-10-03 00:00:00 | 4 | name4 | mail4 | m
2003-10-14 00:33:30 | 5 | name5 | mail5 | m
2003-10-14 00:33:53 | 6 | name6 | mail6 | m
(6 rows)
kawase=> \i test.sql
time | male_count | female_count
----------+------------+--------------
20031001 | 1 | 1
20031003 | 2 |
20031014 | 2 |
(3 rows)
もっとスマートに書きたいところですが、
とりあえず要求は満たしている??
宜しくです。
// 川瀬システムデザイン事務所
// 川瀬 工 (Takumi Kawase) <kawase @ kawase-sd.com>
// TEL: 045-904-9958 Mobile Phone: 090-9674-8369
// Web: http://www.kawase-sd.com
From: "ino_ttpp @ yahoo.co.jp" <ino_ttpp @ yahoo.co.jp>
Subject: [pgsql-jp: 31211] 日付で集計
Date: Tue, 14 Oct 2003 00:02:23 +0900
Message-ID: <20031013235541.1BD1.INO_TTPP @ yahoo.co.jp>
> はじめまして。
> 井上と申します。
>
> SQLで分からない事があり、
> どなたかご教授お願いできませんでしょうか?
> 環境はPostgreSQL 7.3.3です。
>
> 下記のようなテーブルがあり、
> CREATE TABLE user_mst (
> regist_time timestamp(0) without time zone NOT NULL,
> id CHAR(8) ,
> name VARCHAR(25) ,
> mail VARCHAR(50) ,
> sex CHAR(1)
> );
> -------------------------------------------------------------
> regist_time | id | name | mail | sex |
> 2003-10-12 03:57:00 | 111 | tanaka | tanaka@***.jp | m |
> -------------------------------------------------------------
> ※ 性別(sex)は、男:m、女,wとなっております。
>
> 上記のテーブルを元に
> ------------------------------
> regist_time | 男 | 女 |
> 2003-10-12 | 20 | 10 |
> 2003-10-11 | 10 | 15 |
> -----------------------------
> 日付別で男女別ユーザーの数をだしたいのですが、
> どうSQLを書いていいものかわからず質問させていただきました。
>
> 一応、男女の合計を出すまではうまくいきました。
> SELECT
> TO_CHAR(regist_time,'YYYYMMDD') as time,count(*)
> FROM
> user_mst
> WHERE
> TO_CHAR(regist_time,'YYYYMM')='200310'
> GROUP BY
> time
>
>
> 以上、よろしくお願いいたします。
> __________________________________________________
> Do You Yahoo!?
> Yahoo! BB is Broadband by Yahoo!
> http://bb.yahoo.co.jp/
pgsql-jp メーリングリストの案内