[pgsql-jp: 32587] Re: 週単位の件数取得
Hisashi Chiba
ch-999 @ beige.plala.or.jp
2004年 3月 26日 (金) 11:57:12 JST
千葉です。
皆さん色々有り難うございます。
Nakagawa Yasuharu wrote:
> 年と週を含めた関数を作ってあげた方がやりやすいかも知れませんね。
snip
> ===
> create or replace function yw( date ) returns integer as '
> declare
> dd alias for $1 ;
> yr integer ;
> mn integer ;
> wk integer ;
> ret integer ;
> begin
> yr := date_part( ''year'', dd ) ;
> mn := date_part( ''month'', dd ) ;
> wk := date_part( ''week'', dd ) ;
> if wk = 1 and mn = 12 then
> yr := yr + 1 ;
> end if ;
> if wk >= 52 and mn = 1 then
> yr := yr - 1 ;
> end if ;
> ret := yr * 100 + wk ;
> return ret ;
> end ;
> ' language 'plpgsql' ;
> ===
という事で、早速この関数をcreateし、実行してみました。
昨日のテーブル構成とは若干違いますが、実環境でやってみました。
select
year
, month
, week
, count(*)
from (
select
extract(year from pay_date) as year
, extract(month from pay_date) as month
, yw(pay_date) as week
from elec_pay
where pay_date between '2002-02-01' and '2004-12-31'
) as pay
group by
year
, month
, week
order by
year
, month
, week
;
結果の一部を下記に示します。
year |month | week |count
------+-------+--------+-------
2003 | 12 | 200349 | 1
2003 | 12 | 200351 | 8
2003 | 12 | 200352 | 8
2003 | 12 | 200401 | 3
2004 | 1 | 200402 | 1
2004 | 1 | 200404 | 13
2004 | 1 | 200405 | 3
有り難うございました。
pgsql-jp メーリングリストの案内