我有一个特定的方案来跟踪库存项目的进出时间。
我有一个以下格式的Inventory_track表
Inv_id in_time out_time
1) I_1111 2015-11-29 21:05:00. 2015-12-01 03:00:00
2) I_1111 2015-12-01 05:00:00. 2015-12-01 09:00:00
3) I_1111 2015-12-01 15:00:00. 2015-12-01 17:00:00
4) I_1111 2015-12-01 21:00:00. NULL
在任何给定时间点,我想找到库存在冻结位置之外的时间。基本上我想做的是:
(record_2's in_time- record_1's out_time) + ( record_3's in_time- record_2's out_time)
对于给定的库存,等等。 有人可以帮助我在sqlite中查询。如何在上述方案中使用自联接。
答案 0 :(得分:0)
您可以采取不同的方法。找出最大和最小in_time之间的差异,并减去项目在冰箱中停留的时间间隔的总和。
WITH inventory_time_in_freezer AS (
SELECT i1.inv_id, SUM(i1.out_time - i1.in_time) as time_in_freezer
FROM inventory_tack i1
WHERE out_time IS NOT NULL
GROUP BY i1.inv_id
)
SELECT i2.inv_id, MAX(i2.in_time) - MIN(i2.in_time) - iif.time_in_freezer
FROM inventory_tack i2
JOIN inventory_time_in_freezer iif ON iif.inv_id = i2.inv_id
GROUP BY i2.inv_id, iif.time_in_freezer
P.S。上面的查询没有经过测试,只是为了说明这个想法。