我有一個MySQL查詢,爲我的車輛跟蹤'in'和'out'時間生成一個表格。mysql - 設置單元格的值等於另一行單元格的值
問題在於'進入'時間與'出'時間不一樣,所以秒或分鐘之間會丟失。
是否有一種方法可以將'in'時間設置爲與上一行'out time'相等的時間,即使我需要將我的當前select嵌入到新select中?
您將在下圖中看到,第一行的時間爲15:45:14
,下一行的時間爲15:46:14
。所以在這種情況下,一分鐘是在現實lost
如果車輛已經離開一個點,它立即是走向下一個點上,所以我可以設置in
時間等於out
時間上一行。這樣一來,時間是永遠lost
我查詢的SQL是:
select vehicle,InTime,OutTime from (select
PreQuery.callingname as vehicle,
PreQuery.geofence,
PreQuery.GroupSeq,
MIN(PreQuery.`updatetime`) as InTime,
UNIX_TIMESTAMP(MIN(PreQuery.`updatetime`))as InSeconds,
MAX(PreQuery.`updatetime`) as OutTime,
UNIX_TIMESTAMP(MAX(PreQuery.`updatetime`))as OutSeconds,
TIME_FORMAT(SEC_TO_TIME((UNIX_TIMESTAMP(MAX(PreQuery.`updatetime`)) - UNIX_TIMESTAMP(MIN(PreQuery.`updatetime`)))),'%H:%i:%s') as Duration,
(UNIX_TIMESTAMP(MAX(PreQuery.`updatetime`)) - UNIX_TIMESTAMP(MIN(PreQuery.`updatetime`))) as DurationSeconds
from
(select
v_starting.callingname,
v_starting.geofence,
v_starting.`updatetime`,
@lastGroup := @lastGroup + if(@lastAddress = v_starting.geofence
AND @lastVehicle = v_starting.callingname, 0, 1) as GroupSeq,
@lastVehicle := v_starting.callingname as justVarVehicleChange,
@lastAddress := v_starting.geofence as justVarAddressChange
from
v_starting,
(select @lastVehicle := '',
@lastAddress := '',
@lastGroup := 0) SQLVars
order by
v_starting.`updatetime`) PreQuery
Group By
PreQuery.callingname,
PreQuery.geofence,
PreQuery.GroupSeq) parent
where (InTime> DATE_SUB('2013-03-23 15:00', INTERVAL 24 HOUR) or OutTime> '2013-03-23 15:00') and vehicle='TT08' order by InTime asc
MySQL的語法是在深度,使相當大,但可以在一個非常簡單的查詢要做的事。像
select vehicle, intime,outtime from vehicletimes
我期望的結果是這樣的:
select vehicle, intime(outtime of row above),outtime from vehicletimes
第一排的時間可能是最後行outtime可以原樣。我只需要在最短的時間和最長的時間之間考慮每一秒。
任何幫助一如既往的讚賞。
在此先感謝
1.你不想跟蹤車輛進入的時間嗎? 2.您是否要求SQL「報告」外部時間與以前的銀泰時間相同,或者您想要「更正」現有行還是SQL來插入新行? – Sepster 2013-03-25 09:12:37
車輛的運動是連續的。所以它將它記錄爲特定的地理圍欄或路線。問題在於車輛每分鐘都會發送一次更新,所以新車的準確時間不得而知。爲了我所做的這個項目,把時間設置到最後的時間就足夠了。 – Smudger 2013-03-25 09:30:29
我已經創建了一個小提琴來玩,簡化了MySQL的例子,但同樣的概念。 http://sqlfiddle.com/#!2/cbf36/1 – Smudger 2013-03-25 09:31:05