IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL:求筛选时间段内每天各分组的聚合数据 -> 正文阅读

[大数据]SQL:求筛选时间段内每天各分组的聚合数据

任务场景:

报表需求,必须由SQL处理完成,页面筛选条件为日期段,需要将所选日期按照每日区分,查出所有组别在每日的进线量、接通量、呼损量、接听率、进线占比、好评率。

进线量为线路全部进线量,接通量为status=‘Answered’量,呼损量为status=‘NoAnswered’量,接听率=接通量/进线量,进线占比=线路进线量/进线总量,好评率=(非常满意+满意)/(非常满意+满意+服务不满意)

数据库:mysql8.0

表部分结构:

记录表A
session唯一标识
queue_name组别名
status状态
created_at创建时间
评价表B
session唯一标识
grade_name评价等级
created_at创建时间

解决思路:

1.先根据所选时间段筛选出全部数据的记录和评价信息

select 
	DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at, cu.queue_name ,cu.status ,sr.grade_name 
from xcc_data.cdr_union cu 
left join xcc_data.satisfy_rating sr on cu.`session` COLLATE utf8mb4_general_ci = sr.`session` 
where 
	cu.queue_name <> ''
	and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'

得出结果:

2. 根据线路和日期分组,并计算各线路在各天内的聚合数据

select 
	queue_name,DATE_FORMAT(created_at, '%Y-%m-%d') as created_at,
	count(*) as jxzl,
	sum(if(status='Answered',1,0)) as jt,
	SUM(IF(status='NoAnswered', 1, 0 )) as hs,
	SUM(IF(grade_name = '非常满意',1,0)) as fcmy, 
	SUM(IF(grade_name = '满意',1,0)) as my,
	SUM(IF(grade_name = '对服务不满意',1,0)) as fwbmy
from (
	select 
		DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at, cu.queue_name ,cu.status ,sr.grade_name 
	from xcc_data.cdr_union cu 
	left join xcc_data.satisfy_rating sr on cu.`session` COLLATE utf8mb4_general_ci = sr.`session` 
	where 
		cu.queue_name <> ''
		and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
)a 
GROUP by a.created_at,queue_name 
order by queue_name,a.created_at

得出结果:

3.求出筛选时间段内各天的总进线量

select count(*) as xlzl,created_at 
from (
	select DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at,id 
	from xcc_data.cdr_union cu 
	where 
		cu.queue_name <> ''
		and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
)b 
group by b.created_at 

?得出结果:

4.将2,3的结果关联,计算出要求的聚合数据?

select 
	aa.queue_name,
    aa.created_at,        
    jxzl as '进线量',
    jt as '接通量',
    hs as '呼损量',
    IFNULL(CONCAT(ROUND(jt/jxzl*100,2), '%' ),'0.00%') as '接听率',
    IFNULL(CONCAT(ROUND(jxzl/xlzl*100,2), '%' ),'0.00%') as '进线占比',
    IFNULL(CONCAT(ROUND((fcmy+my)/(fcmy+my+fwbmy)*100,2), '%' ),'0.00%') as '好评率'
from (
	select 
		queue_name,DATE_FORMAT(created_at, '%Y-%m-%d') as created_at,
	    count(*) as jxzl,
	    sum(if(status='Answered',1,0)) as jt,
	    SUM(IF(status='NoAnswered', 1, 0 )) as hs,
	    SUM(IF(grade_name = '非常满意',1,0)) as fcmy, 
	    SUM(IF(grade_name = '满意',1,0)) as my,
	    SUM(IF(grade_name = '对服务不满意',1,0)) as fwbmy
	from (
		select 
		    DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at, cu.queue_name ,cu.status ,sr.grade_name 
		from xcc_data.cdr_union cu 
		left join xcc_data.satisfy_rating sr on cu.`session` COLLATE utf8mb4_general_ci = sr.`session` 
		where 
			cu.queue_name <> ''
			and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
	)a 
	GROUP by a.created_at,queue_name 
	order by queue_name,a.created_at
) aa
left join (
	select count(*) as xlzl,created_at from (
		select DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at,id 
		from xcc_data.cdr_union cu 
			where 
				cu.queue_name <> ''
				and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
	)b group by b.created_at 
) bb on aa.created_at=bb.created_at

得出最终结果:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 16:03:48  更:2021-12-18 16:05:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:44:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码