[pgsql-jp: 38710] その日の価格を一覧から取り出す

Atsushi NISHIMURA a2c @ lets-heart.co.jp
2007年 8月 31日 (金) 13:48:47 JST


西村です。
毎度利用させていただいてます。

期間中のある1日の一番安い価格を一覧から取り出したいのですが、
どうDMLを書けばよいのか頭を悩ましてます。

こういうテーブルとレコードを入れています。

create table t_kakaku(
 商品CD   varchar(13) ,
 価格         numeric(12,2) ,
 開始日       date ,
 終了日       date
);

商品CD  価格   開始日   終了日
-------+------+------------+-----------
A001   , 100  , 2007-01-01 ,2007-03-31
A001   , 150  , 2007-02-01 ,2007-02-28
A001   ,  50  , 2007-02-15 ,2007-02-17
A001   ,  10  , 2007-02-15 ,2007-02-17


調べたいのは、2007-02-16当日の一番安い価格とします。
目でみたら最下段の 10円がそれに該当するのですが、
ここまでやってみました。

select
  vt.商品cd ,min(vt.期間) ,min(vt.価格)
from (
  selecr
    age('2007-02-16'::date ,開始日) as 期間 ,
    商品cd ,価格
  from
    t_kakaku
  group by
    期間 ,商品cd ,価格
) as vt
where
  vt.商品cd = 'A001'
group by
  vt.商品cd;

これだと、その商品cd「A001」のもので「期間」が一番小さい値と、
「価格」の中で一番小さな値が表示されます。

「指定した日付はこの範囲内にある」 という風にみるには
どのようにしたらよいでしょうか?

なにかヒントなどありましたらご教授のほど、よろしくお願いいたします...



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