我有一個設備座標時間序列(timestamp,x,y,device_id)的數據庫。如何確定SQL中某個區域和時間範圍內多個設備上的最長駐留時間?如何確定幾何區域內的平均停留時間
這裏是我的數據的至(1.0,1.0的例子(注意,不是在有規律的間隔)
| ts | x | y | device_id
---------------------+-----+-----+-------------
2015-10-24 14:12:39 | 0.5 | 0.5 | 1
2015-10-24 14:12:40 | 0.5 | 0.5 | 1
2015-10-24 14:12:51 | 0.5 | 0.5 | 1
2015-10-24 14:12:52 | 1.0 | 1.0 | 1
2015-10-24 14:12:53 | 1.5 | 1.5 | 1
2015-10-24 14:12:56 | 1.0 | 1.0 | 1
2015-10-24 14:12:57 | 0.5 | 0.5 | 1
2015-10-24 14:12:58 | 0.5 | 0.5 | 1
2015-10-24 14:12:39 | 0.5 | 0.5 | 2
2015-10-24 14:12:40 | 0.5 | 0.5 | 2
2015-10-24 14:12:41 | 1.0 | 1.0 | 2
2015-10-24 14:12:42 | 1.5 | 1.0 | 2
2015-10-24 14:12:45 | 2.0 | 1.0 | 2
2015-10-24 14:12:48 | 2.0 | 1.0 | 2
2015-10-24 14:12:49 | 2.0 | 1.0 | 2
在這裏,停留時間爲裝置1的區域內(0.0,0.0) )將是12秒(14:12:39到14:12:51)和1秒(14:12:57到14:12:58)。設備2在同一區域內的停留時間爲2秒(14:12:39至14:12:41)。最大值爲12s,最小值爲1s,平均值爲5s。
我最初的想法是將device_id上的數據進行分區以獲取每個設備的設置,然後確定min(ts)和max(ts)之間的持續時間作爲該設備的最長時間段,然後在使用以下內容作爲子查詢跨所有設備的期間。
SELECT (max(ts)-min(ts)) as longest_period, device_id
FROM readings
WHERE x < 1.0 AND x > 0.0 AND y < 1.0 AND y > 0.0
GROUP BY device_id, ts
你如何定義一個區域? 'x'和'y'完全一樣嗎? –
這是兩個設備在更大的區域內移動,表中的x和y是它們在任何給定時間的位置。總面積的大小(在我的情況下爲10.0x10.0)並不重要,因爲我只看到我定義的區域的一小部分(0.0,0.0)到(1.0,1.0) – codehugger