对于已持久化的数据按时间区间分段统计

最近的一个小项目,公司需要将自己的服务数据,通过接口提供数据给合作公司.其中有一个是需要统计每5秒的时间区间数据的分布情况,需求是这样的: 需要统计 1-5秒、5-10秒、15-20秒…...,以及平均值,平均值就这里不提了,主要记录下这个按时段统计的.

当时看见这个需求后第一时间想的是用sql 直接 case when搞,仔细想想,根本不是那么回事.case when适用于已知的、固定的纬度计算..后来用了 etl + interval 搞定.

用法可以参考这里 http://blog.itpub.net/13379967/viewspace-715701/

接下来就是需要动态去生成需要统计的区间范围的参数,以及表示区间范围对应的字段名称.

上代码(后台Java):

1.从数据库拿到需要统计数据的最长时间,用最长时间先取模,根据取模就能计算出需要分为几个区间段.

2.已知间隔值,然后和计算出的区间段个数去拼接成sql所需的区间范围参数.相同的,动态拼接区间范围的表示字段.(都作用于后面的sql注入)

// 获取最长等待时间
List<Integer> waitTimeList = callLogService.getMaxNotConnectedWaitTime(requestVO.getSearchDate(), requestVO.getTerminalType());
       if (waitTimeList.size() > 0) {
          // 以下4行是计算平均时长,可忽略
          int timesSum = 0;
          for(Integer times : waitTimeList){
               timesSum += times;
          }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值