给定一个连续运行数据的表:一个数字在任务进行时总是增加,并在下一个任务开始时重置为零,如何选择最大值每次运行的数据?连续运行数据的SQL选择最大值
每个连续运行可以有任意数量的行和数据的运行由AA“开始”和“结束”行标,例如数据可能看起来像
user_id, action, qty, datetime
1, start, 0, 2017-01-01 00:00:01
1, record, 0, 2017-01-01 00:00:01
1, record, 4, 2017-01-01 00:00:02
1, record, 5, 2017-01-01 00:00:03
1, record, 6, 2017-01-01 00:00:04
1, end, 0, 2017-01-01 00:00:04
1, start, 0, 2017-01-01 00:00:05
1, record, 0, 2017-01-01 00:00:05
1, record, 2, 2017-01-01 00:00:06
1, record, 3, 2017-01-01 00:00:07
1, end, 0, 2017-01-01 00:00:07
2, start, 0, 2017-01-01 00:00:08
2, record, 0, 2017-01-01 00:00:08
2, record, 3, 2017-01-01 00:00:09
2, record, 8, 2017-01-01 00:00:10
2, end, 0, 2017-01-01 00:00:10
,其结果将是每次运行的最大值:
user_id, action, qty, datetime
1, record, 6, 2017-01-01 00:00:04
1, record, 3, 2017-01-01 00:00:07
2, record, 8, 2017-01-01 00:00:10
使用任何postgres sql语法(9.3)?它的某种分组,然后从每个组中选择最大值,但我不知道如何执行分组部分。
对于同一个user_id,你能有2个重叠运行(例如来自不同的会话)吗? –
Theres没有为单个用户重叠,下一次运行始终在晚些时候开始。 –