关于hive 子查询、union 、left join
来源:互联网 发布:8051单片机内部结构图 编辑:程序博客网 时间:2024/06/05 01:32
建表语句:
create table tb_in_base
(
id bigint,
devid bigint,
devname string
) partitioned by (job_time bigint) row format delimited fields terminated by ‘,’;
create table tb_in_up
(
id bigint,
devid bigint,
devname string
) partitioned by (job_time bigint) row format delimited fields terminated by ‘,’;
场景一:单表子查询没有指定表别名
语句:select * from (select id,devid,job_time from tb_in_base) ;
执行过程:
提示需要指定子查询源。
加上表别名:
语句:select * from (select id,devid,job_time from tb_in_base) a;
执行过程:
加了表别名后可以正常输出子查询中的数据。
结果分析:在hive中若有子查询必须指定子查询的表别名
场景二:单表查询外围字段比子查询少一个
语句: select id,devid from (select id,devid,job_time from tb_in_base) a;
执行过程:
结果分析:输出外围指定字段的数据 。
场景三:两张表进行union all
语句:
select a.id,a.devid from (select a.id,a.devid,a.job_time from tb_in_base a union all select b.id,b.devid,b.job_time from tb_in_up b) a;
执行过程:
结果分析:两张表进行union all 取相同的字段名称,可正常输出指定数据内容,且结果为两张表的结果集
场景四:两张表进行union
语句:
select a.id,a.devid from (select a.id,a.devid,a.job_time from tb_in_base a union all select b.id,b.devid,b.job_time from tb_in_up b) a;
执行过程:
结果分析:hive 不支持union
网上相关内容: http://www.cnblogs.com/ggjucheng/archive/2013/01/15/2861574.html
场景五:外围使用count、sum 统计id
语句:
select count(a.id),sum(a.id) from (select a.id,a.devid,a.job_time from tb_in_base a union all select b.id,b.devid,b.job_time from tb_in_up b) a;
执行过程:
结果分析:两表直接进行union all 可以使用count、sum 等聚合函数
场景六:union all 时使用count、sum 、max等 聚合函数
结果分析:union all 时不能使用count、sum 、max等 聚合函数,单表可以进行聚合函数使用,如下图:
场景七:left join 是否可以使用max、count、sum 等函数
语句:
select max(a.id),min(b.id),sum(a.job_time),count(a.id) from tb_in_base a join tb_in_up b on (a.id=b.id);
执行过程:
结果分析:在left join 中可以使用max、count等聚合函数。
总结分析
1. 子查询相当于表名,使用 from 关键字需要指定真实表名或表别名。
2. hive 不支持union ,只支持union all
3. 子查询中使用union all 时,在子查询里不能使用count、sum 等 聚合函数
4. 两表直接进行union all 可以使用count、sum 等聚合函数
5. 两张表进行union all 取相同的字段名称,可正常输出指定数据内容,且结果为两张表的结果集
</div> 转载地址:http://blog.csdn.net/ls3648098/article/details/9630357?utm_source=tuicool&utm_medium=referral
阅读全文
0 0
- 关于hive 子查询、union 、left join
- hive 子查询、union 、left join
- hive查询,连接left join、inner join
- 连接查询 left join on, union
- [Hive]用left semi join替代in子查询的方式
- 关于连接查询( join/left join )
- Hive复杂查询时,多层union可以转换为left join,左侧临时维度表生成方式
- MySQL:union、left join
- left outer join 改写标量子查询
- left join 比之 子查询
- Hive学习之Union和子查询
- hive关于left join 和join时候on条件总结
- 数据库查询常用关键字JOIN与LEFT JOIN/UNION与UNION ALL/GROUP BY
- sql server 各种查询语句详解left jion,right join,full join ,join,inner join ,union all,union等
- mysql的left join、right join、inner join、union等连接查询
- JOIN || LEFT JOIN ||RIGHT JOIN || UNION 基础
- hive left join test
- hive left semi join
- Hdu 1711 Number Sequence ( KMP 模板题)
- 操作系统基础
- 求文件夹中最大文件
- 细说c/c++中 运算符 左结合与右结合
- PAT1012第二题
- 关于hive 子查询、union 、left join
- DDD~领域事件与事件总线
- C语言复习
- v-text & v-html 指令
- 消息推送
- 简单密码
- 优雅地乱玩Linux-1-系统
- git远程库
- getCurrentSession()与openSession()的区别