[hive] 经典sql题及答案(三)

推荐:经典sql题及答案(一)经典sql题及答案(二)题目部分22 、使用hive 求出两个数据集的差集?数据t1表:id name1 zs2 lst2表:id name1 zs3 ww结果如下:id name2 ls3 ww2325 、每个用户连续登陆的最大天数?数据:login表uid,date1,2019-08-011,2019-08-02...
摘要由CSDN通过智能技术生成
推荐:

经典sql题及答案(一)
经典sql题及答案(二)

题目部分

22 、使用hive 求出两个数据集的差集?
数据
t1表:
id name
1 zs
2 ls
t2表:
id name
1 zs
3 ww
结果如下:
id name
2 ls
3 ww

23
在这里插入图片描述

25 、每个用户连续登陆的最大天数?
数据:
login表
uid,date
1,2019-08-01
1,2019-08-02
1,2019-08-03
2,2019-08-01
2,2019-08-02
3,2019-08-01
3,2019-08-03
4,2019-07-28
4,2019-07-29
4,2019-08-01
4,2019-08-02
4,2019-08-03
结果如下:
uid cnt_days
1 3
2 2
3 1
4 3

32 、有如下三张表:
表A(登录表):
ds user_id
2019-08-06 1
2019-08-06 2
2019-08-06 3
2019-08-06 4
表B(阅读表):
ds user_id read_num
2019-08-06 1 2
2019-08-06 2 3
2019-08-06 3 6
表C(付费表):
ds user_id price
2019-08-06 1 55.6
2019-08-06 2 55.8
基于上述三张表,请使用hive的hql语句实现如下需求:
(1)、用户登录并且当天有个阅读的用户数,已经阅读书籍数量
(2)、用户登录并且阅读,但是没有付费的用户数
(3)、用户登录并且付费,付费用户书籍和金额

37 数据如下:
1,zhangsan,数学,80,2015
2,lisi,语文,90,2016
3,wangwu,化学,70,2017
4,zhangsan,语文,80,2015
5,zhangsan,化学,90,2015
6,lisi,语文,70,2015
在这里插入图片描述

答案部分

22
create table sql022t1
(
id string,
name string
)
row format delimited 
fields terminated by '\t';
create table sql022t2
like sql022t1;
load data local inpath '/root/in/sql022t1' overwrite into table sql022t1;
load data local inpath '/root/in/sql022t2' overwrite into table sql022t2;

交集
select
    t1.id,
    t1.name,
    t2.name
from
    sql022t1 t1
join
    sql022t2 t2
on
    t1.id=t2.id;tt1
并集
select
    id,
    name
from
    sql022t1
union
select
    id,
    name
from
    sql022t2;tt2
差集=并集-交集
select
tt2.id,
tt2.name
from
    ( 
    select
    t1.id id,
    t1.name name,
    t2.name name1
    from
        sql022t1 t1
    join
        sql022t2 t2
    on
    t1.id=t2.id
    )tt1
right join
    (select
    id,
    name
    from
        sql022t1 t1
    union
    select
        id,
        name
    from
    sql022t2)tt2
on
    tt1.id=tt2.id
where
    tt1.id is null;
    
23
123,dasfdasas,3,200,1535945356,
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值