[pgsql-jp: 31186] Re: 複数の入力それぞれの最新の値を求めるSQL 文

AOKI KAZUYUKI aoki-kazuyuki @ nifty.com
2003年 10月 7日 (火) 15:30:39 JST


鳥居さん、こんにちは。

create table test_tbl {
    id serial
   ,termid int4      ;端末番号
   , dt     datetime  ;入力時間
   , val    int4      ;入力データ
 };

SELECT * FROM test_tbl WHERE id IN (
    SELECT min(id) FROM test_tbl
    GROUP BY termid,dt
    ORDER BY  dt
    LIMIT  X )

X には端末台数を入力では、いかがでしょうか?

青木


> > SELECT * FROM test_tbl WHERE termid = X AND dt IN (SELECT max(dt) FROM
> > test_tbl WHERE termid = X)
> >
> > で、Xに端末IDを指定するというのはいかがでしょう?
>
> これだと端末台数分selectかけなければならないので・・・
>
>
> "gotou" <gotou @ hokkou.co.jp> wrote:
>
> > select termid, t1.val from test_tbl as t1 inner join
> >  (select termid, max(dt)as dt from test_tbl group by termid)as t2
> > using (termid, dt)
> > group by termid;
>
> ISHIDA Akio <iakio @ pjam.jpweb.net> wrote:
>
> > select * from test_tbl tt1
> >  where not exists
> >       (select * from test_tbl tt2
> >         where tt1.termid = tt2.termid
> >           and tt1.dt < tt2.dt)
>
> やはり端末番号と時間の別表を作るアプローチしかなさそうですね。
> もしかしてサブクエリ無しで書けるんじゃないかと思ったのですが
> 難しいみたいですね。distinctとかlimitとかいろいろやってみまし
> たがうまくいきませんでした・・
>
> 皆さんどうもありがとうございました。
>
>
> -- 
>       __________
>      (_ _______()
>      __||_[]_||__
>     (___________()
>        ||‡‡||             鳥居 大哉 (Hiroya TORII)
>        ||    ||
>    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
>
>





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