相关疑难解决方法(0)

在PostgreSQL中对组内的行进行排序

我有以下查询:

SELECT
  routeid, 
  'SRID=4326;LINESTRING(' || string_agg(lon || ' ' || lat, ',') || ')' AS the_geom
FROM route_table 
WHERE observation_time BETWEEN '2012-09-12 10:00:00' AND '2012-09-12 10:15:00'
GROUP BY routeid HAVING COUNT(lon) > 1 ORDER BY observation_time ASC;
Run Code Online (Sandbox Code Playgroud)

该查询的目的是从route_table(由routeid,observation_time,lat和lon列组成)中提取所有lon / lat值,按routeid对其进行分组,并在每个组中按观察时间对它们进行排序。但是,上面的SQL无效,因为observation_time出现在ORDER BY子句中,而不出现在GROUP BY中。当我将observation_time添加到GROUP BY时,我没有得到正确的结果。

假设这样的数据集:

routeid | observation_time      | lat | lon
---------------------------------------------
    1   | '2012-09-12 01:00:00' | 30  | -75
    1   | '2012-09-12 01:05:00' | 31  | -76
    1   | '2012-09-12 01:10:00' | 31  | -76.5
    2   | '2012-09-12 01:03:00' …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by

3
推荐指数
1
解决办法
1884
查看次数

标签 统计

postgresql ×1

sql ×1

sql-order-by ×1