在聚合函数之前排序分组的行

Ili*_*oly 7 postgresql postgis sql-order-by aggregate-functions

我有一个带点几何的postgis表.

点数表:

id | uid | date | geom
Run Code Online (Sandbox Code Playgroud)

具有相同的点uid是相同的目标.我正在尝试GROUP BY uid使用ST_MakeLine创建一个完整的目标LineString.

SELECT uid, ST_MakeLine(geom)
FROM points
GROUP BY uid
Run Code Online (Sandbox Code Playgroud)

这有效,但我想确保点的顺序正确.我尝试通过添加ORDER BY date之前的分组来做到这一点.

SELECT uid, ST_MakeLine(geom)
FROM points
ORDER BY date <-- does not work
GROUP BY uid

ERROR: syntax error at or near "GROUP"
Run Code Online (Sandbox Code Playgroud)

有没有办法在分组行输入聚合函数之前对其进行排序?

Ili*_*oly 9

ORDER BY子句可以放在聚合参数的末尾.

SELECT uid, ST_MakeLine(geom ORDER BY date)
FROM points
GROUP BY uid
Run Code Online (Sandbox Code Playgroud)

http://www.postgresql.org/docs/9.1/static/sql-expressions.html#SYNTAX-AGGREGATES