SQLite:查询特定的时间跟踪方案

时间:2015-12-30 22:30:18

标签: database sqlite datetime self-join

我有一个特定的方案来跟踪库存项目的进出时间。

我有一个以下格式的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
  1. 无论何时将库存放入冰箱,我都会插入带有in_time的新记录
  2. 无论何时取出库存,我都会更新out_time(不是插页,只是更新)
  3. 在任何给定时间点,我想找到库存在冻结位置之外的时间。基本上我想做的是:

    (record_2's in_time- record_1's out_time) + ( record_3's in_time- record_2's out_time)
    
    对于给定的库存,

    等等。 有人可以帮助我在sqlite中查询。如何在上述方案中使用自联接。

1 个答案:

答案 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。上面的查询没有经过测试,只是为了说明这个想法。