[pgsql-jp: 26185] Re: 集約関数と副問い合わせ
WADA Hiroyuki
wada @ komine-ag.co.jp
2002年 5月 29日 (水) 11:13:26 JST
高森 みつき wrote:
>
> 日付がTIMESTAMP型でしたので、
> 2つ目のSQL文の
> BETWEEN ’2002/1/1’ AND ’2002/1/31’を
> BETWEEN '2002-1-1 00:00:00' AND '2002-1-31 23:59:59'と修正し、
>
> Select count(time) from (Select name, min(time) from
> database group by name) WHERE time BETWEEN ’2002/1/1’ AND ’2002/1/31’
> ;としました。
修正が入ってませんが?
> これでPostgresqlは「その人の最も古いアクセス日時を拾ってきて、
> 日付範囲の中だったらカウントする」と解釈してくれないのでしょうか?
件数を数えるだけなら count(*) の方がいい
サブクエリにはASが必要
サブクエリにtimeというカラムがない
ということで、
select count(*) from
(select name,min(time) as time from database group by name) as t
where time between '2002-1-1 00:00:00' AND '2002-1-31 23:59:59'
てなもんでしょうか。
月だけ見ればいいケースなので、betweenよりもto_charを使って文字列に
してしまった方が簡単。(date_truncというのもありますが)
select month,count(*) from
(select name,min(to_char(time,'YYYY-MM')) as month
from database group by name) as t
group by month
のようにすれば、複数月をまとめてもできます。
和田
pgsql-jp メーリングリストの案内