我建立了一個模式與SQL小提琴:SQLite的 - 馬克斯(列)整蠱查詢
我們在TestTable的這些列:
- ID作爲主鍵的 [int](未使用 - >不重要)
- 結束 [int] - 如果一個新流寫入表中,但最後一次的值爲'0'且最後一個值爲'1'。這是指輸入流在這裏完成。
- time_abs [int] - 絕對時間(例如以分步)。
- r_m [雙] - 是SUMED了隨時間
- T_R [雙]的質量比 - 不要緊
- 型 [串] - 也無所謂這裏
- X0 [字符串] - 出發(例如,其中不落入水?)
- X1 [字符串] - 目的地(?例如,其中確實在水流)
正如你可以在SQL小提琴架構看到我們查詢每質量在一定的位置,並在一定的時間是這樣的:
SELECT
(SELECT (SELECT total(r_m)
FROM testtable
WHERE time_abs=11 AND end=0 AND x1='vessel2') +
(SELECT total(r_m)
FROM testtable
WHERE end=1 AND time_abs <=11 AND x1='vessel2')
)
-
(SELECT (SELECT total(r_m)
FROM testtable
WHERE time_abs=11 AND end=0 AND x0='vessel2') +
(SELECT total(r_m)
FROM testtable
WHERE end=1 AND time_abs <=11 AND x0='vessel2')
)
效果很好,速度快。
但是我們現在要查詢什麼是r_m在一定時間範圍的最大。
E.g. 僞代碼:
SELECT max(total(r_m))
WHERE time_abs BETWEEN 1 AND 30 & SELECT time_abs WHERE r_m=max ...
使得該僞查詢的結果是(123,13-24)(最大(總質量),時間跨度,其中總質量=最大)(在SQL Fiddle Schema中手動檢查)。
任何想法?
你爲什麼僅彙總舊流入的流結束('end = 1')? – Andomar
因爲流入流增加,直到完成。所以'end = 1'是舊流入的總質量。我們只需要這個值,因爲它包含了所有'end = 0'流的信息。 – StefanOverFlow