MySQL计算时间间隔比例的总和重叠

时间:2017-07-20 12:32:34

标签: mysql sql

我有一个,如下所示:

 ------------------------------------------------------------------------
|  Base   |  Shift |     Start_date      |      End_date       |  Driver |
| ------- | ------ | ------------------- | ------------------- | ------- |
|  390    |   46   | 2017-05-26 10:20:00 | 2017-05-26 11:35:00 |    3    |
|  378    |   46   | 2017-05-26 10:26:00 | 2017-05-26 11:40:00 |    3    |
|  367    |   46   | 2017-05-26 10:05:00 | 2017-05-26 11:30:00 |    3    |
|  350    |   46   | 2017-05-26 13:40:00 | 2017-05-26 14:30:00 |    3    |
|  340    |   45   | 2017-05-25 11:10:00 | 2017-05-25 12:30:00 |    3    |
|  351    |   45   | 2017-05-25 11:10:00 | 2017-05-25 12:30:00 |    3    |
|  656    |   45   | 2017-05-25 09:00:00 | 2017-05-25 10:40:00 |   10    |
|  456    |   45   | 2017-05-25 09:10:00 | 2017-05-25 10:10:00 |   10    |
|   56    |   45   | 2017-05-25 08:00:00 | 2017-05-25 11:50:00 |   10    |
 ------------------------------------------------------------------------

每个班次都对应于特定的一天。我想计算同一班次内每个司机的时间间隔比例重叠之和。结果输出应如下所示。一个例子可能有助于理解我正在寻找的结果:

  • 示例1:换档46中的驾驶员3服务于基座367并且同时服务基座378达到0.75的时间并且基座390用于0.82的时间给出1.58的总和。该结果表明,在时间间隔期间,驱动程序3是服务基础367,同时也服务于1.58其他基础。
  • 示例2:换档45中的驾驶员10服务于基地656并且同时为基地456服务0.6和时间基数56为1.0的时间给出1.6的总和。

表格输出:

 ----------------------------------------------------
|  ID   |  Shift | Sum_Overlap_Proportions |  Driver |
| ----- | ------ | ----------------------- | ------- |
|  390  |   46   |       1.853             |    3    |
|  378  |   46   |       1.797             |    3    |
|  367  |   46   |        1.58             |    3    |
|  350  |   46   |           0             |    3    |
|  340  |   45   |           1             |    3    |
|  351  |   45   |           1             |    3    |
|  656  |   45   |         1.6             |   10    |
|  456  |   45   |           2             |   10    |
|   56  |   45   |       0.696             |   10    |
 ----------------------------------------------------

接受这方面的帮助会很棒。我没有足够的SQL技能来解决这个问题。

感谢您的帮助。

0 个答案:

没有答案