【发布时间】:2017-09-16 12:38:01
【问题描述】:
表 A 按天存储每个库存数量:
+---+------------+----------+-------------+
|id | Stock_id | amount | Date |
+---+------------+----------+-------------+
| 1 | 1 | 100 | 2017-09-05 |
| 2 | 1 | 200 | 2017-09-06 |
| 3 | 1 | 300 | 2017-09-07 |
| 4 | 1 | 200 | 2017-09-08 |
| 5 | 1 | 200 | 2017-09-09 |
| 6 | 1 | 200 | 2017-09-10 |
| 7 | 2 | 300 | 2017-09-06 |
+---+------------+----------+-------------+
表 B 包含股票 id 和类别之间的关系。添加日期表示库存添加到类别的时间,删除日期表示库存被删除的日期。如果 remove date 为 null ,则表示该库存仍在该类别中。
+---+----------+ ------- +------------+------------+
|id | Stock_id |Category | Add Date | Remove Date|
+---+----------+-------- +------------+------------+
| 1 | 1 | Category1| 2017-09-03 | 2017-09-07 |
| 2 | 1 | Category1|2017-09-09 | null |
+---+----------+-------- +------------+------------+
我的问题是给出一个时间范围,例如从 2017-09-05 到 2017-09-08。首先对于 Stock1 和 Category1,我想计算与表 b 的时间重叠,即 。然后将表 A 中从 2017-09-05 到 2017-09-06 的金额相加。结果是 (100+200) = 300。如果时间范围是 2017-09-06 到 2017-09-10,则重叠是 。总和结果为 (200+200+200)=600。
我该怎么做?谢谢大家!
【问题讨论】: