Sumif在两个表之间的Postgresql中

时间:2018-04-05 21:28:51

标签: postgresql sumifs

这是我的两个样本表。

表“中断”(列格式为文本,时间戳,时间戳)

+-------------------+----------------+----------------+
| outage_request_id |  actual_start  |   actual_end   |
+-------------------+----------------+----------------+
| 1-07697685        | 4/8/2015 4:48  | 4/8/2015 9:02  |
| 1-07223444        | 7/17/2015 4:24 | 8/01/2015 9:23 |
| 1-07223450        | 2/13/2015 4:24 | 4/29/2015 1:03 |
| 1-07223669        | 4/28/2017 9:20 | 4/30/2017 6:58 |
| 1-08985319        | 8/24/2015 3:18 | 8/24/2015 8:27 |
+-------------------+----------------+----------------+

和第二个表“价格”(列格式为数字,时间戳)

+-------+---------------+
| price |     stamp     |
+-------+---------------+
| -2.31 | 2/1/2018 3:00 |
| -2.35 | 2/1/2018 4:00 |
| -1.77 | 2/1/2018 5:00 |
| -2.96 | 2/1/2018 6:00 |
| -5.14 | 2/1/2018 7:00 |
+-------+---------------+

我的目标:将每个outage_request_id的开始和停止时间之间的价格相加。

我不知道如何正确加入表格并获得这些停机时间戳范围内的价格总和。

1 个答案:

答案 0 :(得分:2)

我不能保证这是有效的(事实上对于非常大的桌子,我觉得它不相信),但是这应该从理论上得到你想要的东西:

select
  o.outage_request_id, o.actual_start, o.actual_end,
  sum (p.price) as total_price
from
  outage o
  left join prices p on
    p.stamp between o.actual_start and o.actual_end
 group by
   o.outage_request_id, o.actual_start, o.actual_end