mysql时段数据报表统计

select hour,sum(a.countSuccess) successCn, (sum(a.countSuccess)+sum(a.callFailed)+sum(a.unListened)+sum(a.emptyNo)) cn,(sum(a.callFailed)+sum(a.unListened)+sum(a.emptyNo)) failCn from 
			(
			 <foreach collection="list" index="index" item="taskId"  separator=" union all " >
			SELECT
				HOUR (t.call_time) AS hour,
				sum(case when status=3 then 1 else 0 end) countSuccess,
				sum(case when status=4 then 1 else 0 end) callFailed,
				sum(case when status=5 then 1 else 0 end) unListened,
				sum(case when status=6 then 1 else 0 end) emptyNo
			FROM
				tb_task_run_${taskId} t
			WHERE
				DATE_FORMAT(t.call_time, '%Y%m%d') = DATE_FORMAT(now(), '%Y%m%d')  and HOUR(t.call_time)	BETWEEN 8 and 23
			and t.status IN ('3', '4', '5', '6')
			GROUP BY
				HOUR (t.call_time)
			 </foreach>
			) a
			GROUP BY a.hour

场景:统计多个任务表中,每天早晨8点到晚上23点各个状态(成功/失败/未接听/空号)的任务记录数有多少


	select tb.* from  
		(
		 <foreach collection="days" index="index" item="day"  separator=" union all " >
			(	select t.id,t.appId,p.app_name appName,t.callid callId,t.caller ,t.nbr,t.start_time startTime,t.end_time endTime,t.result_label resultLabel,t.status,
				CASE LENGTH(t.transfer_number)
				WHEN 14 THEN
				    t.transfer_extension
				ELSE
				    t.transfer_number 
				END as transfer_number_show,
				t.transfer_extension transferExtension,t.transfer_number transferNumber,t.record_url recordUrl,(UNIX_TIMESTAMP(t.end_time)-UNIX_TIMESTAMP(t.start_time)) timeInt
				from tb_incoming_call_${day} t,uc_ipcc_cloud_ai.tb_application p
				where t.appId = p.app_sid and  t.start_time is not null 
				<if test="param.caller != null and param.caller!=''">
					and t.caller = ${param.caller}
				</if>
				<if test="param.ids != null and param.ids != ''">
					and t.id in (${param.ids})
				</if>
				<choose>
					<when test="param.beginDate_1==null or param.beginDate_1==''">
						and  t.start_time BETWEEN str_to_date(DATE_FORMAT(NOW(),'%Y-%m-%d'),'%Y-%m-%d %H:%i:%s') and DATE_ADD(str_to_date(DATE_FORMAT(NOW(),'%Y-%m-%d'),'%Y-%m-%d %H:%i:%s'),INTERVAL 1 DAY)
					</when>
					<otherwise>
					   and  t.start_time BETWEEN ${param.beginDate_1} and ${param.endDate_1}
					</otherwise>
				</choose>
		 	)
		 </foreach>
		 ) tb
		 order by tb.startTime desc
		<if test="limit != null and limit != ''">
            ${limit}
        </if>
场景:每天一张呼入表,统计一段日期时间段内的呼入详情信息。


猜你喜欢

转载自blog.csdn.net/shengqianfeng/article/details/79642533