2013-08-20 28 views
0

所以我很努力與這個查詢到目前爲止我可以創建1分鐘的間隔,但我需要的兩列的總和只是給出分鐘,而不是累積總和隨着時間的推移posgresql查詢1分鐘的時間間隔與所有時間範圍內的累計總和

SELECT 
    TIMESTAMP WITH TIME ZONE 'epoch' + 
    INTERVAL '1 second' * round(extract('epoch' from "Timestamp")/60) * 60 as Timestamp", 
    SUM("Particles"), sum("Bio") 
from "Results" 
where "SampleID" = 50 
GROUP BY round(extract('epoch' from "Timestamp")/60) 
ORDER BY "Timestamp" DESC 

那就是我使用的查詢,結果是這些

  Timestamp  |Sum |Sum 
"2013-08-09 14:17:00-07" | 61 | 4 
"2013-08-09 14:16:00-07" | 64 | 6 
"2013-08-09 14:15:00-07" | 29 | 5 
"2013-08-09 14:14:00-07" | 96 | 1 
"2013-08-09 14:13:00-07" | 43 | 2 

,但我需要最後兩柱的側向承載力的累計總和

Select 
    TIMESTAMP WITH TIME ZONE 'epoch' + 
    INTERVAL '1 second' * round(extract('epoch' from "Timestamp")/60) * 60 as "Timestamp", 
    sum("Particles") over (order by "Timestamp") as Cumulative_Part, 
    sum("Bio") over (order by "Timestamp") as Cumulative_Bio from "Results" 
where 
    "SampleID" = 50 and 
    "Timestamp" between '2013-08-09 14:13:00' and '2013-08-09 14:17:00' 
GROUP BY round(extract('epoch' from "Timestamp")/60) 
Order by "Timestamp" DESC 
+0

啊這工作我不得不改變它一點點謝謝! –

回答

0

如果你的PostgreSQL 8.4或以上,你可以使用一個OVER(ORDER BY..)結構

SELECT... 
, SUM("Particles") OVER(ORDER BY TimeStamp_Field) as SUM_Particles 
... 

看到here更多信息

+0

我收到一個錯誤,說「列」Results.Particles「必須出現在GROUP BY子句中或用於聚合函數」 –

+0

請將新的完整SQL語句添加到您的原始問題。僅僅從您的評論中很難說出發生了什麼。 –

+0

我知道問題與我得到間隔的方式有關,因爲我嘗試了你的答案而沒有得到間隔,並且工作正常,但我需要在1分鐘間隔內分隔時間戳 –