[pgsql-jp: 28348] Re: 年代別の集計

Kasumi_Iwata Kasumi_Iwata @ virtems.com
2002年 12月 16日 (月) 22:05:18 JST


こんにちは。岩田と申します。

過去に似たような質問を投げ、川合さんよりすてきなサンプルを頂いたので
そちらを参考にしてしていただくと問題が解決出来ると思います。

そのサンプルはこちらにあります.。
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-May/001169.html

LEFT OUTER JOIN を使えばお望の結果が得られると思います。
それでは。

2002年12月16日(月)の20時51分に Hiroshi Ishiura 曰く:
> 石浦です。
> 下記SQLありがとうございます。
> なるほど5で割った状態でgroup byするのすね。
> ちょうどお返事いただく少し前に調べていたら同様のやりかたのものが何件がこ
> ちらもみつかっていました。
> ageフィールドの丁寧な記述もどうもありがとうございました。
> 1つ勉強になりました。
> 
> で1つついでですが、この方法だと0件の年代がカットされてしまいますよね。
> これはgroup byしてる以上しかたないですよね。
> 0件の年代もいれて年代の若い順に表示させる方法ってありますでしょうか。
> 
> 
> > おおぐまです。
> > 
> > もっとスマートにできそうですが、こんなのはどうでしょうか?
> > 
> > 環境:PostgresSQL 7.3
> > 
> > #create temp table person( birth date, name text);
> > #insert into person values( '2002-1-1', 'ab' );
> > #insert into person values( '2000-1-1', 'ba' );
> > #insert into person values( '1990-1-1', 'cde' );
> > #insert into person values( '1991-1-1', 'efg' );
> > #insert into person values( '1992-1-1', 'hi' );
> > #insert into person values( '1993-1-1', 'jk' );
> > #insert into person values( '1980-1-1', 'lm' );
> > #insert into person values( '1985-1-1', 'asd' );
> > #select
> >   ((date_part('year',age('now',birth))::integer / 5 ) * 5 ) || '-' ||
> >   (((date_part('year',age('now',birth))::integer / 5 ) + 1) * 5 - 1 ) as age,
> >   count(*)
> > from person
> > group by (date_part('year',age('now',birth))::integer / 5);
> > 
> >   age  | count
> > -------+-------
> >  0-4   |     2
> >  5-9   |     1
> >  10-14 |     3
> >  15-19 |     1
> >  20-24 |     1
> > 
> > 
> > 
> > > 石浦です。
> > > 生年月日から年齢をはじきだし、それを年代別で集計しようとしています。
> > > 通常の範囲検索であれば
> > > 例えば20〜29の20代を検索する場合
> > > select count(*) from member where date_part('year',age('now',birthday))
> > > between 20 and 29
> > > で検索ヒットできます。
> > > 
> > > 今回は検索ではなく会員分析等で年代別の集計をスマートなSQLでできないもの
> > > かと考えています。
> > > つまり
> > > agetime|count
> > > -----------------
> > > ・・・・
> > > 20-24  |24
> > > 25-29  |23
> > > 30-34  |56
> > > 35-39  |45
> > > ・・・・
> > > -------------------
> > > のように1つのSQLで表現できないものでしょうか。
> > 
> > --
> > RNC Computer System Co., Ltd.
> > 大熊秀和 (OHGUMA Hidekazu)
> > E-mail: ohguma @ rnc-com.co.jp
> > Tel: 087-823-3011 Fax: 087-823-3101
> 
> -- 
> Hiroshi Ishiura <issy777 @ entrance-e.com>
> 
---------
Kasumi Iwata
Kasumi_Iwata @ virtems.com
http://www.virtems.com





pgsql-jp メーリングリストの案内