最終退出ログのとりかた

Q:出る方向にドアを通過したログ(access_log)がある。2008年3月分の毎日の最終退出時刻と最終退出者をだせ。

条件
1) AM8:00~翌AM7:59を1日とする。
2) SQLだけで書いてください。
3) テーブルには通過時刻(access_day)、通過者番号(member_no)のみ記録されている。
4) 通過時刻は重複しないものとする

A.

めんどくさいので一回ビュー張ります。
create view last_access as select (access_day + ‘-8 hours’)::date as day,max(access_day) from access_log group by day;

その後access_logとlast_accessを時刻でぶつけます。
select last_access.day,last_access.max,access_log.member_no from last_access,access_log where last_access.max = access_log.access_day and last_access.day between ‘2008-03-01’ and ‘2008-03-31’ order by last_access.day;

ビュー張らなくても書けるような気はするんじゃがとんでもなく長くなりそうなので、これでいいかな、と。

カテゴリー: programming パーマリンク