2

在我正在从事的一个项目中,数据库中存储了一些测量值。测量由世界坐标 (posX, posY, posZ) 站标识号 (stationID) 和测量时间 (time) 组成。

有时由于不同的原因在现场重新进行测量,然后有多个测量具有相同的坐标和站点 ID,但在不同的时间执行。

有没有办法编写一个 sql 查询,以便我获得所有 VALID 测量值,即只有在坐标和站 ID 相同的情况下才能获得最新的测量值?

我不太擅长 SQL,所以我什至不知道该用谷歌搜索什么,所以即使你只知道我应该使用什么类型的命令,任何指针都非常感谢 :)

编辑:

我的任务刚刚改变,显然站号无关紧要,只有坐标和时间。

另外,我正在使用实现 SQL-92 的 DISQLite3。

4

1 回答 1

1

是的,您可以在 SQL 中执行此操作。

您似乎想为每个站和坐标组合获取最新条目 - 查看GROUP BYROW_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 回答