Hive查询,客服电话练习
如图片,我自己建了两个表格模拟数据库内容,
如下:
table:call
Hive查询,客服电话练习
table:sep
Hive查询,客服电话练习
create table call(case_id int, create_time date,deal_name string,deal_group string) row format delimited fields terminated by ‘,’;

load data local inpath ‘/opt/module/data/call.txt’ into table call;

create table sep(feed_id int, case_id int, eva_end_time date,sat_name string) row format delimited fields terminated by ‘,’;

load data local inpath ‘/opt/module/data/sep.txt’ into table sep;

1,合并两个表,join,并显示有评价的内容
select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’;t1

2,总评价量
select
deal_name,count(deal_name) zong
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name;t2

4满意评价量,
select
deal_name,sat_name,count(sat_name) countsat
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name,sat_name
having sat_name=‘m’ ; t3

5,满意率
select
t3.deal_name,t3.countsat,t2.zong,t3.countsat/t2.zong manyi
from
(select
deal_name,count(deal_name) zong
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name)t2
join
(select
deal_name,sat_name,count(sat_name) countsat
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name,sat_name
having sat_name=‘m’ )t3
on
t2.deal_name=t3.deal_name;t6

6 sep中没有被评为满意的任务

select
case_id,sat_name
from
sep
where
sat_name<>‘m’ and
sat_name<>‘null’;t1

7,call表 按照电话创建时间顺序排列,
select
case_id,creat_time,deal_name
from
call
order by creat_time;t2

8.连接两个表

select
t1.case_id,t1.sat_name,t2.create_time,t2.deal_name
from
(select
case_id,sat_name
from
sep
where
sat_name<>‘m’ and
sat_name<>‘null’)t1
join
(select
case_id,create_time,deal_name
from
call
order by create_time)t2
on t1.case_id=t2.case_id;t3

9 对每个用户没有被评为满意的数据进行排名
select
case_id,sat_name,create_time,deal_name,rank()over(partition by deal_name order by create_time asc) rank1
from
(select
t1.case_id,t1.sat_name,t2.create_time,t2.deal_name
from
(select
case_id,sat_name
from
sep
where
sat_name<>‘m’ and
sat_name<>‘null’)t1
join
(select
case_id,create_time,deal_name
from
call
order by create_time)t2
on t1.case_id=t2.case_id)t3;t4

10,找出第一个来电的任务编号

select
deal_name,case_id,rank1,create_time
from
(select
case_id,sat_name,create_time,deal_name,rank()over(partition by deal_name order by create_time asc) rank1
from
(select
t1.case_id,t1.sat_name,t2.create_time,t2.deal_name
from
(select
case_id,sat_name
from
sep
where
sat_name<>‘m’ and
sat_name<>‘null’)t1
join
(select
case_id,create_time,deal_name
from
call
order by create_time)t2
on t1.case_id=t2.case_id)t3)t4
where rank1=1;t5

11,得出结果
select
t3.deal_name,t3.countsat,t2.zong ,t6.manyi,t5.case_id
from
(select
deal_name,sat_name,count(sat_name) countsat
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name,sat_name
having sat_name=‘m’ ) t3 join (select
t3.deal_name,t3.countsat,t2.zong,t3.countsat/t2.zong manyi
from
(select
deal_name,count(deal_name) zong
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name)t2
join
(select
deal_name,sat_name,count(sat_name) countsat
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name,sat_name
having sat_name=‘m’ )t3
on
t2.deal_name=t3.deal_name) t6 on
t3.deal_name=t6.deal_name
join (select
deal_name,case_id,rank1,create_time
from
(select
case_id,sat_name,create_time,deal_name,rank()over(partition by deal_name order by create_time asc) rank1
from
(select
t1.case_id,t1.sat_name,t2.create_time,t2.deal_name
from
(select
case_id,sat_name
from
sep
where
sat_name<>‘m’ and
sat_name<>‘null’)t1
join
(select
case_id,create_time,deal_name
from
call
order by create_time)t2
on t1.case_id=t2.case_id)t3)t4
where rank1=1)t5 on
t3.deal_name=t5.deal_name
join (select
deal_name,count(deal_name) zong
from
(select
a.case_id,create_time,deal_name,feed_id,eva_end_time,sat_name
from
call a inner join sep b
on a.case_id=b.case_id
where sat_name <> ‘null’ )t1
group by deal_name)t2 on
t3.deal_name=t2.deal_name;

相关文章:

  • 2022-01-13
  • 2022-01-12
  • 2021-07-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-05
  • 2021-06-21
  • 2021-11-20
  • 2021-12-09
  • 2021-06-09
  • 2022-01-25
相关资源
相似解决方案