2

私が取り組んでいるプロジェクトでは、測定値がデータベースに保存されています。測定値は、ワールド座標 (posX、posY、posZ)、ステーション識別番号 (stationID)、および測定時間 (time) で構成されます。

さまざまな理由で現場で測定がやり直されることがあります。その後、同じ座標とステーション ID を使用して異なる時間に実行された複数の測定が行われることがあります。

すべての有効な測定値、つまり座標とステーション ID が同じ場合に最新のもののみを取得するように SQL クエリを作成する方法はありますか?

私はSQLにあまり精通していないので、何をグーグルで検索すればよいかさえよくわからないので、使用すべきコマンドのタイプしか知らない場合でも、ポインターは非常に高く評価されます:)

編集:

私のタスクが変更されたばかりです。どうやらステーションIDは関係なく、座標と時間だけです。

また、SQL-92 を実装する DISQLite3 を使用しています。

4

1 に答える 1

1

はい、SQL で実行できます。

ステーションと座標の組み合わせごとに最新のエントリを取得したいようです-GROUP BYまたはを見てくださいROW_NUMBER()

SQLバリアントに応じて(指定すると便利です)、次のような...

 select *
 from
     (Select *, 
             row_number() over (Partition by coordinates, stationid order by measurementtime desc) rn
      from yourtable
     ) v
 where rn = 1

ランキング機能なし

 select yourtable.* 
 from yourtable
      inner join
      (
           select coordinate, MAX(time) maxtime from yourtable
           group by coordinate 
      ) v
on yourtable.coordinate = v.coordinate
and yourtable.time = v.maxtime
于 2012-09-04T11:57:46.353 に答える