求问时间段重叠数据统计方法

id name start_date end_date amount
1
设备A 2017-1-1 2017-1-5 3
2 设备B 2017-1-1 2017-1-5 4
3 设备C 2017-1-1 2017-1-7 2
4 设备A 2017-1-10 2017-1-15 2
5 设备A 2017-1-13 2017-1-16 2
6 设备B 2017-1-10 2017-1-13 3
7 设备B 2017-1-15 2017-1-185

数据结构如上表,想求各设备的最大使用量,如使用时间重叠则数量相加,所求结果如下

设备A 4
设备B 5
设备C 2


求问怎么统计?谢谢
编辑于 2018-7-21 22:38  
FineReportzero-omega 发布于 2018-7-21 22:37
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共10回答
最佳回答
0
wukaihua发布于2018-7-21 22:37(编辑于 2023-9-6 09:34)
555
  • zero-omega zero-omega(提问者) 求问mysql数据库该怎么解决,目前我是后台写循环解决重叠时间与累加,然后把结果存到一张新表上,再用sql求最大值
    回复
    2018-07-26 16:21 
  • wukaihua wukaihua mysql貌似没有with as的写法,把临时表diejia,直接替换成with as后面的逻辑就好了,下面的你试试看,不过估计数据量大的话会比较慢
    select name,max(amount) amount
    from (
    select name,amount from test_1 a where id not in (select id from (select *
    from test_1 a
    where exists
    (select 1 from test_1 b
    where a.name=b.name and a.id<>b.id
    and (  (a.start_date>=b.start_date and a.start_date<=b.end_date)
        or  (a.end_date>=b.start_date and a.end_date<=b.end_date)   )
    )))
    union all
    select name,sum(amount) amount from (select *
    from test_1 a
    where exists
    (select 1 from test_1 b
    where a.name=b.name and a.id<>b.id
    and (  (a.start_date>=b.start_date and a.start_date<=b.end_date)
        or  (a.end_date>=b.start_date and a.end_date<=b.end_date)   )
    )) group by name
    ) group by name
    order by name asc
    回复
    2018-07-27 10:26 
最佳回答
0
zsh331发布于2018-7-21 23:36(编辑于 2023-9-6 09:34)
555
  • zero-omega zero-omega(提问者) 我的问题不是单单max groupby,首先要将时间段重叠的同设备相加再求最大值,如何相加是问题所在
    回复
    2018-07-22 00:15 
最佳回答
0
Paul_yau发布于2018-7-22 08:58(编辑于 2023-9-6 09:34)
555
最佳回答
0
Paul_yau发布于2018-7-22 09:01(编辑于 2023-9-6 09:34)
555
最佳回答
0
zsh331发布于2018-7-22 09:09(编辑于 2023-9-6 09:34)
555
  • zero-omega zero-omega(提问者) 这样好像只会把2个时间段完全相同的才相加,如(2017-1-1,2017-1-5)和(2017-1-2,2017-1-7)2个时间段值是不同的,但实际上使用时间是重叠的
    回复
    2018-07-22 14:36 
最佳回答
0
axing发布于2018-7-23 16:40(编辑于 2023-9-6 09:34)
555
  • 0关注人数
  • 563浏览人数
  • 最后回答于:2018-7-27 10:26
    活动推荐 更多
    热门课程 更多
    返回顶部