現在我試圖解決這似乎爲我的理解某種程度上與Finding gaps in huge event streams?總結圖表,但略有不同的時間戳
我有我的表中數據的幾個流的問題。我想總結一下時間,但他們並不總是相同的時間戳。該表是這樣的:
模式:
CREATE TABLE Table1
("id" int, "stream_id" int, "timestamp" timestamp, "value" real)
;
INSERT INTO Table1
("id", "stream_id", "timestamp", "value")
VALUES
(1, 7, '2015-06-01 15:20:30', 0.1),
(2, 7, '2015-06-01 15:20:31', 0.2),
(3, 7, '2015-06-01 15:20:32', 0.3),
(4, 7, '2015-06-01 15:25:30', 0.5),
(5, 7, '2015-06-01 15:25:31', 1.0),
(6, 6, '2015-06-01 15:20:31', 1.1),
(7, 6, '2015-06-01 15:20:32', 1.2),
(8, 6, '2015-06-01 15:20:33', 1.3),
(9, 6, '2015-06-01 15:25:31', 1.5),
(10, 6, '2015-06-01 15:25:32', 2.0)
;
我試圖解決這個問題:
with ts as (select "timestamp"
from Table1
order by "timestamp"
),
data as (select "timestamp","value"
from Table1
order by "timestamp"
),
streams as (select "stream_id"
from Table1
group by "stream_id"
order by "stream_id"
)
select * .... (question)
我希望得到一個圖線爲大家總結了數據。當一次在其他流中沒有數據時,總和應該佔用當前時間戳的timestamp < current_timestamp
但最近的行。如果沒有價值,假設0
我想過遞歸查詢,但我有點不明白的解決方案......
編輯:在這裏,我試圖以圖形解釋:
編輯2:
我想這樣的事情,但我沒有得到最後的「啄」來完成它。
with RECURSIVE data as (
select * from rawdata
where date(date_time)='2014-05-01'
),
streams as (
select stream_id from data
group by stream_id
),
t(n) AS (
VALUES (1)
UNION ALL
SELECT n+1 FROM t WHERE n < (select count(*) from streams)
)
SELECT n FROM t;
我對你在問什麼有點困惑。你只需要每個流的總和或每個流的總和按時間分配。如果你需要它,你的時間分辨率是多少? I.E.你需要一分鐘的流量總和嗎?5分鐘?等... –
我更新了我的問題,以更好地解釋它。我不想用桶或時間片來總結它們。我不知道如何用英文解釋它,所以我試圖用圖形來解釋它。 –
你想總結多少個數字? 3個或更多?該圖表明每個總和包含3個項。這是否意味着你想總結最後3個數字,每個數字必須來自不同的流? – krokodilko