我需要一些有关 SQLite 查询的帮助。我有两张桌子,一张叫做“生产”的桌子和一张叫做“暂停”的桌子:
CREATE TABLE production (
date TEXT,
item TEXT,
begin TEXT,
end TEXT
);
CREATE TABLE pause (
date TEXT,
begin TEXT,
end TEXT
);
对于生成的每个项目,都会在表 production 中创建一个条目,其中包含当前日期、开始时间和结束时间(格式为 HH:MM:SS 的两个时间戳)。所以让我们假设,生产表看起来像:
+------------+-------------+------------+----------+
| date | item | begin | end |
+------------+-------------+------------+----------+
| 2013-07-31 | Item 1 | 06:18:00 | 08:03:05 |
| 2013-08-01 | Item 2 | 06:00:03 | 10:10:10 |
| 2013-08-01 | Item 1 | 10:30:15 | 14:20:13 |
| 2013-08-01 | Item 1 | 15:00:10 | 16:00:00 |
| 2013-08-02 | Item 3 | 08:50:00 | 15:00:00 |
+------------+-------------+------------+----------+
第二个表还包含日期以及开始和结束时间。所以让我们假设,“暂停”表如下所示:
+------------+------------+----------+
| date | begin | end |
+------------+------------+----------+
| 2013-08-01 | 08:00:00 | 08:30:00 |
| 2013-08-01 | 12:00:00 | 13:30:00 |
| 2013-08-02 | 10:00:00 | 10:30:00 |
| 2013-08-02 | 13:00:00 | 14:00:00 |
+------------+------------+----------+
现在我想要一张表格,其中包含每个项目的生产开始时间和结束时间之间的时间差。如果“暂停”表中有匹配的条目,则应减去暂停时间。
所以基本上,最终结果应该是这样的:
+------------+------------+-------------------------------------------------+
| date | Item | time difference (in seconds), excluding pause |
+------------+------------+-------------------------------------------------+
| 2013-07-31 | Item 1 | 6305 |
| 2013-08-01 | Item 1 | 12005 |
| 2013-08-01 | Item 2 | 13207 |
| 2013-08-02 | Item 3 | 16800 |
+------------+------------+-------------------------------------------------+
我不太确定,如何使用 SQLite 完成它。我知道用 Python 可以进行这种计算,但最后我认为让数据库进行计算会更好。也许你们中的某个人可以给我一个关于如何解决这个问题的提示。我尝试了不同的查询,但结果总是与我预期的不同。