Hive只支持在FROM子句中使用子查询,子查询必须有名字,并且列必须唯一:SELECT ... FROM(subquery) name ...
确认下是否一定要求列必须唯一? 
   
建表语句:
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  select b.id,b.devid,b.job_time from tb_in_up b) a;

执行过程:



结果分析:hive 不支持union 




场景五:外围使用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 取相同的字段名称,可正常输出指定数据内容,且结果为两张表的结果集

hive 子查询特别分析的更多相关文章

  1. Hive:子查询

    Hive只支持在FROM子句中使用子查询,子查询必须有名字,并且列必须唯一:SELECT ... FROM(subquery) name ...

  2. hive子查询

    如果集合中含有空值,不能使用not in的语法指令:但是可以使用in

  3. 记一次pgsql中查询优化(子查询)

    记一次pgsql的查询优化 前言 这是一个子查询的场景,对于这个查询我们不能避免子查询,下面是我一次具体的优化过程. 优化策略 1.拆分子查询,将需要的数据提前在cte中查询出来 2.连表查询,直接去 ...

  4. sql 语句 嵌套子查询 执行顺序分析

    --创建测试数据create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))inser ...

  5. HIVE:用外连接替代子查询

    由于hive也支持sql,很多人会把hql跟标准sql进行比较,甚至有的时候会直接套用.hive不支持事务也不支持索引,更不支持追加写,但是对于一般的sql都是能够支持的.但是对于一些子查询确实无法支 ...

  6. mysql(4)—— 表连接查询与where后使用子查询的性能分析。

    子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...

  7. hive中的子查询改join操作(转)

    这些子查询在oracle和mysql等数据库中都能执行,但是在hive中却不支持,但是我们可以把这些查询语句改为join操作: -- 1.子查询 select * from A a where a.u ...

  8. MySQL 使用profile分析慢sql,group left join效率高于子查询

    MySQL 使用profile分析慢sql,group left join效率高于子查询 http://blog.csdn.net/mchdba/article/details/54380221 -- ...

  9. Hive学习之Union和子查询

    Union的语法格式如下: select_statement UNION ALL select_statement UNION ALL select_statement ... Union用于将多个S ...

随机推荐

  1. 第六届华为创新杯编程大赛-进阶1第1轮 洞穴逃生 (bfs + 优先队列)

    这个题容易出错想了挺长时间,然后代码不长,1Y.. 做完题,看了一下别人的博客,也可以优先用 闪烁法术, 在闪烁法术不不如跑步的阶段(即魔法恢复的时候)用跑步. 洞穴逃生 描述: 精灵王子爱好冒险,在 ...

  2. HDU 1358 (所有前缀中的周期串) Period

    题意: 给出一个字符串,在所有长度大于1的前缀中,求所有的周期至少为2的周期串,并输出一个周期的长度以及周期的次数. 分析: 有了上一题 HDU 3746 的铺垫,这道题就很容易解决了 把next求出 ...

  3. VS2005中乱码问题

    VS2005打开某些文件(如.inc, js)的时候出现乱码: 解决方法: 工具 --> 选项 --> 文本编辑器 --> 将“自动检测不带签名的 UTF-8编码”选中保存即可. V ...

  4. erlang reduction

    “首先明确一点,Erlang的process的调度是抢占式的,而非couroutine的协作式的.其次,Erlang早期版本是只有一个调度器,运行在一个线程上,随着erts的发展,现在erlang的调 ...

  5. 专题:Windows编译x264、SDL、faac、ffmpeg过程

    Windows上编译ffmpeg完整过程,包括编译x264.SDL.faac.在Windows上编译ffmpeg需要用MinGW+msys,本专题用于记录编译过程中遇到的各种问题及解决方法,转载请注明 ...

  6. 《C++ Primer 4th》读书笔记 第5章-表达式

    原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3912114.html

  7. (2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...

  8. 【转】cocos2d-x 3.2 Fast TileMap

    概述 在游戏中常常会有丰富的背景元素,如果直接使用大的背景图实现,这会造成资源浪费.TileMap就是为了解决这问题而产生的.Cocos2d-x支持使用Tile地图编辑器创建的TMX格式的地图. Co ...

  9. system函数的总结

    最近在看APUE第10章中关于system函数的POSIX.1的实现.关于POSIX.1要求system函数忽略SIGINT和SIGQUIT,并且阻塞信号SIGCHLD的论述,理解得不是很透彻,本文就 ...

  10. [Papers]NSE, $u_3$, Lebesgue space [Jia-Zhou, NARWA, 2014]

    $$\bex u_3\in L^\infty(0,T;L^\frac{10}{3}(\bbR^3)). \eex$$