【发布时间】:2022-11-28 21:09:18
【问题描述】:
有如下日志表:
| prod_id | station_id | date_in |
| -------- | ---------- | ---------------------------- |
| p1 | s1 | 2022-09-01 12:06:41.6216195 |
| p2 | s1 | 2022-09-02 10:06:14.6216195 |
| p2 | s2 | 2022-09-02 02:04:55.6216195 |
| p1 | s2 | 2022-09-02 11:06:40.6216195 |
| p3 | s1 | 2022-09-02 04:06:23.6216195 |
| p1 | s3 | 2022-09-03 12:00:33.6216195 |
| p2 | s1 | 2022-09-04 02:06:44.6216195 |
| p1 | s4 | 2022-09-04 07:12:20.6216195 |
| p2 | s2 | 2022-09-05 03:04:21.6216195 |
| p2 | s3 | 2022-09-07 05:17:35.6216195 |
| p1 | s3 | 2022-09-08 14:50:54.6216195 |
| p1 | s4 | 2022-09-10 09:08:10.6216195 |
| p1 | s5 | 2022-09-11 11:22:47.6216195 |
如何计算每种产品在每个站点花费的总时间(以天为单位)?
例如计算 p1 花费的天数:
| prod_id | station_id | date_in | sysdate = (2022-09-13) |
| -------- | ---------- | ------------ | ---------------------------------- |
| p1 | s1 | 2022-09-01 | (2022-09-02) - (2022-09-01) = 1 |
| p1 | s2 | 2022-09-02 | (2022-09-03) - (2022-09-02) = 1 |
| p1 | s3 | 2022-09-03 | (2022-09-04) - (2022-09-03) = 1 |
| p1 | s4 | 2022-09-04 | (2022-09-08) - (2022-09-04) = 2 |
| p1 | s3 | 2022-09-08 | (2022-09-10) - (2022-09-08) = 2 |
| p1 | s4 | 2022-09-10 | (2022-09-11) - (2022-09-10) = 2 |
| p1 | s5 | 2022-09-11 | sysdate - (2022-09-11) = 2 |
p1 的结果:
| prod_id | s1 | s2 | s3 | s4 | s5 | s6 |...
| -------- | -- | -- | -- | -- | -- | -- |...
| p1 | 1 | 1 | 1+2 | 2+2 | 2 | 0 |...
最后结果应该是这样的:
| prod_id | s1 | s2 | s3 | s4 | s5 | s6 |...
| -------- | -- | -- | -- | -- | -- | -- |...
| p1 | 1 | 1 | 3 | 4 | 2 | 0 |...
| p2 | 1 | 4 | 0 | 0 | 0 | 0 |...
| p3 | 11 | 0 | 0 | 0 | 0 | 0 |...
对于每个产品的最后一条记录,计算时要考虑
sysdate。站点没有任何特定顺序(日志表只能按
date_in排序)。我正在使用甲骨文 11g。
【问题讨论】: