[pgsql-jp: 38712] Re: その日の価格を一覧から取り出す
藤澤
qsecofr1 @ hotmail.com
2007年 8月 31日 (金) 14:02:10 JST
藤澤です。
「2/16 が開始日と終了日の間にあるレコードの内、価格が最小のもの」
と考えると書けませんか?
検証してませんが、こちらでどうでしょう?
--------------------------------------------
SELECT
MIN(価格)
FROM
t_kakaku
WHERE
商品CD = 'A001' AND
開始日 <= '2007-02-16'::date AND
'2007-02-16'::date <= 終了日 ;
--------------------------------------------
/藤澤
On Fri, 31 Aug 2007 14:03:45 +0900 (JST)
Atsushi NISHIMURA <a2c @ lets-heart.co.jp> wrote:
> 西村です。
> 毎度利用させていただいてます。
>
> 期間中のある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 メーリングリストの案内