【发布时间】:2021-04-07 14:42:30
【问题描述】:
鉴于以下表 1 表示以稳定的速率持续给药:
| row | id | starttime | endtime | drug_total_amount |
|---|---|---|---|---|
| 1 | 21 | 2163-04-13T03:00:00 | 2163-04-13T06:00:00 | 99 |
| 2 | 21 | 2163-04-13T16:00:00 | 2163-04-13T23:00:00 | 540 |
| 3 | 21 | 2163-04-14T02:30:00 | 2163-04-14T17:00:00 | 308 |
| 4 | 21 | 2163-04-14T17:00:00 | 2163-04-14T20:30:00 | 72 |
| 5 | 21 | 2163-04-14T20:40:00 | 2163-04-15T00:00:00 | 40 |
| 6 | 6 | 2163-04-14T17:00:00 | 2163-04-14T20:30:00 | 72 |
| 7 | 6 | 2163-04-14T20:40:00 | 2163-04-15T00:00:00 | 39.75 |
| 8 | 6 | 2163-04-15T00:00:00 | 2163-04-15T01:00:00 | 13.5 |
| 9 | 6 | 2163-04-15T01:00:00 | 2163-04-15T02:00:00 | 9 |
而表2代表了带有时间戳的事件:
| row | id | event | event_time |
|---|---|---|---|
| 1 | 21 | 1 | 2163-04-14T17:30:00 |
在事件之前的给定时间间隔内,将管理值与特定 ID 相加的最有效方法是什么?
例如:
我想在事件 id 1 (pre_24_hours_drug) 之前的 24 小时内汇总药物量 -
表 1 中的相关行是 2-4(每个 id 和时间范围):
- 仅 17:00 到
endtime(~424) 之间的部分金额 - 总量 (308)
- 仅
starttime和 17:00 (~10) 之间的部分金额
结果应该是:
| row | id | event | event_time | pre_24_hours_drug |
|---|---|---|---|---|
| 1 | 21 | 1 | 2163-04-14T17:30:00 | 742.5714286 |
【问题讨论】:
标签: sql datetime select google-bigquery sum