0
給定一個表「點」,如:如何根據多列的排序對PostgreSQL中的聚合進行分組?
time | session_id | trail_id
------------------------------
1 | 1 | 1
2 | 1 | 1
3 | 1 | 3
4 | 1 | 3
5 | 1 | 3
6 | 1 | 1
7 | 1 | 1
8 | 1 | 1
9 | 1 | 1
10 | 1 | 1
如何能夠將這些物品進行分組,這樣我可以使用「session_id的」聚合函數相對於trail_id,而按時間排序?即)我希望在trail_id隨時間變化時分組。
的查詢,如:
SELECT count(session_id), session_id, trail_id
FROM <?>
會產生:
count | session_id | trail_id
-------------------------------
2 | 1 | 1
3 | 1 | 3
5 | 1 | 1
我相信這可以用窗函數來完成,但並不成功爲止。
下並沒有完全得到我需要是的,因爲它組中的所有trail_ids不分時間:
SELECT session_id, trail_id,
first_value(time) OVER (PARTITION BY session_id, trail_id ORDER BY time) as v
FROM points
而且,在我的生產使用情況下,「點」表將是JOIN的結果,幷包含幾百萬行。這些點將具有PostGIS幾何類型,並與ST_MakeLine()函數進行彙總。性能明智,這將是更好的PL/pgSQL嘗試?
這很聰明!並且運作良好。不幸的是,這是一個概念證明,我幾個星期都無法真正測試,所以我不得不看看當時的表現如何。 –