給定一個連續運行數據的表:一個數字在任務進行時總是增加,並在下一個任務開始時重置爲零,如何選擇最大值每次運行的數據?連續運行數據的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沒有爲單個用戶重疊,下一次運行始終在晚些時候開始。 –