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相关推荐

  1. hive关于left join 和join时候on条件总结

    hive中使用join时候on条件 1.如果 select * from a left join b on(a.字段=b.字段) 工作正常 2.如果 select * from a left join ...

  2. Hive的连接(join)方案

    一 Common JOIN/Reduce Side JOIN/Shuffle JOIN 这三种其实都是一种连接方案:即在Reduce端做JOIN操作.一般情况下,如果不手动指定MapJoin或者不满足 ...

  3. Hive的Map Join与Common Join

    笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join). 一.Hive Common Join 如果不指定MapJoin ...

  4. Hive map side join入门及测试

    什么是MapJoin? MapJoin顾名思义,就是在Map阶段进行表之间的连接.而不需要进入到Reduce阶段才进行连接.这样就节省了在Shuffle阶段时要进行的大量数据传输.从而起到了优化作业的 ...

  5. Hive left semi join ,select 和 where中不能出现右表字段/不会生成笛卡尔积

    1 left semi join的时间比in的时间短,比in高效 2 left semi join时select中不能出现右表的字段,不然报错 3  left semi  join 时on中出现左表字 ...

  6. 轻松玩转hive中各种join之间的关系以及使用

    hive编程是整个数据仓库操作的核心,而各种业务之间的join是hive的核心,所以熟练明白滴掌握hive中的各种join是数据仓库开发工程师必备的技能.    hive中的join只支持等值join ...

  7. hive之Map Join使用方法

    目录 介绍 mapjoin的使用方法 结语 介绍 MAPJION会把小表全部加载到内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map端是进行了join操作,省去了reduce ...

  8. Hive优化之Join(三)

    1.Join算法概述   Hive拥有多种join算法,包括Common Join,Map Join,Bucket Map Join,Sort Merge Buckt Map Join等,下面对每种j ...

  9. 关于hive中Map join 时大表left join小表的问题

    在hive中,(启用Map join时) 大表left join小表,加载从右向左,所以小表会加载进内存,存储成map键值对,通过大表驱动小表,来进行join,即大表中的join字段作为key 来获取 ...

  10. asc desc排序_HIVE的学习之路(六)Hive的分组Join排序

    分组 Group By语句 GROUP BY语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然后对每个组执行聚合操作. 案例实操: (1)计算emp表每个部门的平均工资 hive (d ...

最新文章

  1. Flex布局教程(来源:阮一峰)
  2. 你负责人工智能哪部分?人工那部分:知识图谱的构建主要靠人工还是机器?...
  3. 更改本地dns的host文件解析池的FQDN,以便office communicator非域远程登录
  4. UA MATH524 复变函数3 复变函数的极限与可微性
  5. python tf_TF 2.1.0-rc2发布,2020年停止支持Python 2
  6. python基础(part12)--模块
  7. python数据分析方法和命令_《利用Python进行数据分析》 —— (1)
  8. 博客地址 RSS地址
  9. SSH框架之Spring4专题3:Spring与AOP
  10. 凭什么相信你,我的CNN模型
  11. QT之二维码生成以及识别
  12. Git环境傻瓜式讲解
  13. 电视行业和政策发展历程
  14. 约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】
  15. Java聊天室系统(三):图形界面窗口展示
  16. 微信赌场——H5棋牌游戏渗透之旅
  17. crypto密码总结
  18. [机器学习][1]--PLA算法
  19. 基于matlab的gui设计与实现,毕业设计基于MATLAB GUI的数字图像处理的设计与实现(V2.1)...
  20. 为iOS的mobileconfig文件进行签名

热门文章

  1. mysql 命令as 使用_【翻译自mos文章】使用asmcmd命令在本地和远程asm实例之间拷贝as...
  2. shell循环读文件 Linux脚本读文件
  3. Android Studio实现记事本项目
  4. 那个抗血栓机器人_美国DJO抗血栓压力袜
  5. 查看mysql的默认存储引擎信息_如何查看mysql的默认存储引擎
  6. jQueryEasyUI各个版本(1.1-1.9)下载
  7. 错误: 编码GBK的不可映射字符 - Android Studio 生成javadoc文档时报错
  8. java 事件分发机制_读Android源码之事件分发机制最全总结
  9. apache php提示下载,apache正在下载php文件而不是显示它们。
  10. 此计算机中未配置默认浏览器,飞火浏览器设置默认浏览器失败了怎么办-飞火浏览器设置默认浏览器的方法 - 河东软件园...