Hive练习之join
1)有三张表分别为会员表(member)销售表(sale)退货表(regoods)
(1)会员表有字段memberid(会员id,主键)credits(积分);
(2)销售表有字段memberid(会员id,外键)购买金额(MNAccount);
(3)退货表中有字段memberid(会员id,外键)退货金额(RMNAccount)。
2)业务说明
(1)销售表中的销售记录可以是会员购买,也可以是非会员购买。(即销售表中的memberid可以为空);
(2)销售表中的一个会员可以有多条购买记录;
(3)退货表中的退货记录可以是会员,也可是非会员;
(4)一个会员可以有一条或多条退货记录。
查询需求:
分组查出销售表中所有会员购买金额,同时分组查出退货表中所有会员的退货金额,把会员id相同的购买金额-退款金额得到的结果更新到表会员表中对应会员的积分字段(credits)
数据集
sale
1001 50.3
1002 56.5
1003 235
1001 23.6
1005 56.225.633.5
regoods
1001,20.1
1002,23.6
1001,10.1
,23.5
,10.2
1005,0.8
1)建表
create table member
(memberid string,credits double
) row format delimited fields terminated by '\t';drop table sale;
create table sale
(memberid string,MNAccount double
) row format delimited fields terminated by ',';
load data local inpath '/data/11.txt' into table sale;
select * from sale;drop table regoods;
create table regoods
(memberid string,RMNAccount double
) row format delimited fields terminated by ',';
load data local inpath '/data/12.txt' into table regoods;select * from regoods;
2)最终SQL
with a as (select memberid,sum(MNAccount) MNAccountfrom salewhere memberid != ''group by memberid),b as (select memberid,sum(RMNAccount) RMNAccountfrom regoodswhere memberid != ''group by memberid),c as (select a.memberid,MNAccount,RMNAccountfrom ajoin b on a.memberid = b.memberid)
insert overwrite table member
select memberid,MNAccount - RMNAccount
from c
select * from member;
+--------+------------------+
|memberid|credits |
+--------+------------------+
|1001 |43.7 |
|1002 |32.9 |
|1005 |55.400000000000006|
+--------+------------------+
总结
这个题就是两个表简单join一下就可以了,注意空值过滤
Hive练习之join相关推荐
- hive关于left join 和join时候on条件总结
hive中使用join时候on条件 1.如果 select * from a left join b on(a.字段=b.字段) 工作正常 2.如果 select * from a left join ...
- Hive的连接(join)方案
一 Common JOIN/Reduce Side JOIN/Shuffle JOIN 这三种其实都是一种连接方案:即在Reduce端做JOIN操作.一般情况下,如果不手动指定MapJoin或者不满足 ...
- Hive的Map Join与Common Join
笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join). 一.Hive Common Join 如果不指定MapJoin ...
- Hive map side join入门及测试
什么是MapJoin? MapJoin顾名思义,就是在Map阶段进行表之间的连接.而不需要进入到Reduce阶段才进行连接.这样就节省了在Shuffle阶段时要进行的大量数据传输.从而起到了优化作业的 ...
- Hive left semi join ,select 和 where中不能出现右表字段/不会生成笛卡尔积
1 left semi join的时间比in的时间短,比in高效 2 left semi join时select中不能出现右表的字段,不然报错 3 left semi join 时on中出现左表字 ...
- 轻松玩转hive中各种join之间的关系以及使用
hive编程是整个数据仓库操作的核心,而各种业务之间的join是hive的核心,所以熟练明白滴掌握hive中的各种join是数据仓库开发工程师必备的技能. hive中的join只支持等值join ...
- hive之Map Join使用方法
目录 介绍 mapjoin的使用方法 结语 介绍 MAPJION会把小表全部加载到内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map端是进行了join操作,省去了reduce ...
- Hive优化之Join(三)
1.Join算法概述 Hive拥有多种join算法,包括Common Join,Map Join,Bucket Map Join,Sort Merge Buckt Map Join等,下面对每种j ...
- 关于hive中Map join 时大表left join小表的问题
在hive中,(启用Map join时) 大表left join小表,加载从右向左,所以小表会加载进内存,存储成map键值对,通过大表驱动小表,来进行join,即大表中的join字段作为key 来获取 ...
- asc desc排序_HIVE的学习之路(六)Hive的分组Join排序
分组 Group By语句 GROUP BY语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然后对每个组执行聚合操作. 案例实操: (1)计算emp表每个部门的平均工资 hive (d ...
最新文章
- Flex布局教程(来源:阮一峰)
- 你负责人工智能哪部分?人工那部分:知识图谱的构建主要靠人工还是机器?...
- 更改本地dns的host文件解析池的FQDN,以便office communicator非域远程登录
- UA MATH524 复变函数3 复变函数的极限与可微性
- python tf_TF 2.1.0-rc2发布,2020年停止支持Python 2
- python基础(part12)--模块
- python数据分析方法和命令_《利用Python进行数据分析》 —— (1)
- 博客地址 RSS地址
- SSH框架之Spring4专题3:Spring与AOP
- 凭什么相信你,我的CNN模型
- QT之二维码生成以及识别
- Git环境傻瓜式讲解
- 电视行业和政策发展历程
- 约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】
- Java聊天室系统(三):图形界面窗口展示
- 微信赌场——H5棋牌游戏渗透之旅
- crypto密码总结
- [机器学习][1]--PLA算法
- 基于matlab的gui设计与实现,毕业设计基于MATLAB GUI的数字图像处理的设计与实现(V2.1)...
- 为iOS的mobileconfig文件进行签名
热门文章
- mysql 命令as 使用_【翻译自mos文章】使用asmcmd命令在本地和远程asm实例之间拷贝as...
- shell循环读文件 Linux脚本读文件
- Android Studio实现记事本项目
- 那个抗血栓机器人_美国DJO抗血栓压力袜
- 查看mysql的默认存储引擎信息_如何查看mysql的默认存储引擎
- jQueryEasyUI各个版本(1.1-1.9)下载
- 错误: 编码GBK的不可映射字符 - Android Studio 生成javadoc文档时报错
- java 事件分发机制_读Android源码之事件分发机制最全总结
- apache php提示下载,apache正在下载php文件而不是显示它们。
- 此计算机中未配置默认浏览器,飞火浏览器设置默认浏览器失败了怎么办-飞火浏览器设置默认浏览器的方法 - 河东软件园...