[pgsql-jp: 36340] Re: 特定日が最終ログインのユーザを取り出す

TANIDA Yutaka tanida @ sraoss.co.jp
2005年 11月 7日 (月) 14:50:46 JST


谷田@現実逃避中です。

On Mon, 07 Nov 2005 14:33:40 +0900
choice <choice-site @ choice-site.com> wrote:

> ログインの記録を保存している以下のようなテーブルが
> あるとします。
> 
> ●テーブル名:loginlog
> 
> username | logindate
> ----------+------------
> a     | 2005-11-07
> c     | 2005-11-06
> a     | 2005-11-05
> b     | 2005-11-05
> 
> このデータから最後にログインした日が「2005-11-05」の
> ユーザだけを取り出すようにするにはどうしたらよいのか
> ということで悩んでます。ちなみに取得したい結果はユーザ「b」
> だけとなります。

集約関数+havingが使えるケースですね。

select username,max(logindate) 
	from loginlog 
	group by username 
	having max(logindate) = "2005-11-05"

とかは?

#書いてみて、なるほど、こういうケースにも集約関数が使えるのか、
#と感心したのは秘密

> 僕としては、同じ構造をもつtmploginlogというテーブルをつくり、
> 
> insert into tmploginlog select username,logindate from loginlog
>  where logindate='2005-11-05';

一時テーブルは使わないほうがいいですよ。


-- 
TANIDA Yutaka <tanida at sraoss.co.jp>





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