【发布时间】:2019-04-09 07:46:01
【问题描述】:
user_id | date | distance
1 | 2019-04-09 00:00:00 | 2
1 | 2019-04-09 00:00:30 | 5
1 | 2019-04-09 00:01:00 | 3
1 | 2019-04-09 00:01:45 | 7
1 | 2019-04-09 00:02:30 | 6
1 | 2019-04-09 00:03:00 | 1
如何对下一行的距离求和,直到达到阈值并再次重置计数器。
例如,如果阈值为 10,我试图获得以下输出:
1 | 2019-04-09 00:00:00 | 2
1 | 2019-04-09 00:00:30 | 7 (2 + 5)
1 | 2019-04-09 00:01:00 | 10 ( 7 + 3 )
1 | 2019-04-09 00:01:45 | 7 RESET
1 | 2019-04-09 00:02:30 | 13 (7 + 6 )
1 | 2019-04-09 00:03:00 | 1 RESET
但我只能通过以下查询获得累积距离:
SELECT *, sum(distance) over (order by date asc) as running_distance FROM table;
我正在使用 PostgreSQL。
【问题讨论】:
-
您使用的是哪个 RDBMS? mysql还是postgre?你标记了两个
-
我正在使用 PostgreSQL
-
有一个关于类似主题的讨论。看看这里:dba.stackexchange.com/questions/163557/…
-
“累积距离”取模 10 怎么样?
标签: sql postgresql window-functions