Database SQLite:查询特定的时间跟踪场景

Database SQLite:查询特定的时间跟踪场景,database,sqlite,datetime,self-join,Database,Sqlite,Datetime,Self Join,我有一个特定的场景来跟踪库存物品的进出时间 我有以下格式的库存跟踪表 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)

我有一个特定的场景来跟踪库存物品的进出时间

我有以下格式的库存跟踪表

      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
  • 任何时候库存被放进冰箱,我都会插入一个新的记录,其中有一个in_time
  • 无论何时取出库存,我都会更新出库时间(不是插入,只是更新)
  • 在任何给定点,我都希望找到库存在冻结位置之外花费的时间。基本上我想做的是:

    (record_2's in_time- record_1's out_time) + ( record_3's in_time- record_2's out_time)
    
    对于给定的库存,依此类推。
    有人能帮我在sqlite中查询一下吗。如何在上述场景中使用自连接

    你可以采取不同的方法。找出最大和最小的时间差,减去物品在冰箱中停留的时间间隔总和

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