存储过程统计数据处理

         目前这家公司的工作在做一个客户系统,有接触统计通话记录.需求是这样的,要统计出每个客服一天,甚至是管理员选什么时候到什么时候如:10天  15 天   20 天 的通话量,通话时长,通话的满意评价数量,以及不满意的评价数量.以及通话记录按地区统计.

   要实现这些统计,怎么做合适呢?

          1.统计查询?...源数据表中的数据日渐增加,等到数据量到达10w100w这样查询会很慢的..

          2.根据统计的要求创建几张表,举例:如地区统计新建一张地区统计表有如下字段 date city  callNumber. 在创建一张历史通话记录表,大致与通话记录表差不多,专门将通话记录的数据采集到通话历史表中,通话记录表只保存当天数据,到每天0晨. 的时候将通话记录的统计到地区统计表中,然后将通话记录保存到历史通话记录表中,在删掉通话记录表中的数据,每天统计当天的数据插入地区统计,这一系列操作可以用存储过程来实现,用定时任务调用存储过程,统计查询的查地区统计表..

  3. 通话量,通话时长,通话的满意评价数量,这种众合报表,的实现也差不多,只不过统计表的结构不一样..也就增加用个CODE标示通话量、通话时长、通话的满意评价数量

存储过程代码:

BEGIN
	#通话归属地统计采集
	DECLARE TEMP_CALL_NUMBER	INT(11);
	DECLARE cnt	INT(1) DEFAULT 0;
	DECLARE TEMP_PHONE_CITY VARCHAR(255);
	DECLARE TEMP_CALL_TYPE VARCHAR(10);
	#查询统计当天的通话信息 放到游标里面
	DECLARE done TINYINT(1) DEFAULT 0 ;
	DECLARE callRecordReportFrom CURSOR FOR
	select phone_city as call_city, count(1) as call_number ,(case WHEN call_type='A' THEN '呼入' else '呼出' end) as call_type from  t_call_record  GROUP BY phone_city,call_type;


	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
  
	#循环读取游标数据
	OPEN callRecordReportFrom;
		cursor_loop:LOOP
		FETCH callRecordReportFrom INTO TEMP_PHONE_CITY,TEMP_CALL_NUMBER,TEMP_CALL_TYPE;
		IF done = 1 THEN
			LEAVE cursor_loop;
		END IF;
		#查询该城市是否已经存在
	  SELECT COUNT(1) into cnt FROM city_from WHERE call_city = TEMP_PHONE_CITY AND call_type = TEMP_CALL_TYPE;
		
		#存在就修改将统计好的数据加进去
		IF cnt > 0 THEN
			UPDATE city_from SET 	call_number = call_number+TEMP_CALL_NUMBER  WHERE call_city = TEMP_PHONE_CITY AND call_type = TEMP_CALL_TYPE;
    END IF;
		#不存在就新增一条数据
    IF cnt = 0 THEN
			INSERT INTO city_from (call_city,call_number,call_type)
			VALUES(TEMP_PHONE_CITY,TEMP_CALL_NUMBER,TEMP_CALL_TYPE);
    END IF;


		END LOOP cursor_loop;
		CLOSE callRecordReportFrom;
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值