Union的语法格式如下: select_statement UNION ALL select_statement UNION ALL select_statement ... Union用于将多个SELECT语句的查询结果合并到一个结果集中,目前Hive只支持UNION ALL,也就是结果集中的重复记录不会被删除.SELECT语句返回列的数目和名称必须相同,否则会报schema错误.Union语句还可以嵌套在FROM子句中: SELECT * FROM ( select_statement U…
1.SELECT语句是SQL的查询.我之前的随笔中所用的SELECT语句都是简单的查询,即从单个数据库表中检索数据的单条SELECT语句. 查询:任何SQL语句都是查询,但此术语一般指SELECT语句. 2.SQL不仅允许简单的SELECT查询,还允许创建子查询,即嵌套在其他查询中的查询. 下面通过实例来了解子查询在实际项目中的应用: create database Study gouse Study go create table Customers( Id ,), Name ) null )…
知识点八:子查询(42) 什么是子查询: 子查询是将一个查询语句嵌套在另一个查询语句中.内层查询语句的查询结果,可以作为外层查询语句提供条件. 引发子查询的情况: 使用[NOT] IN 的子查询 --删除原本的员工表和部门表,重新建 DROP TABLE employee,department; CREATE TABLE IF NOT EXISTS department( id TINYINT UNSIGNED AUTO_INCREMENT KEY, depName ) NOT NULL UNI…
-- 1.查询比7654工资要高的员工 select * from emp where sal>(select sal from emp where empno=7654); ---2.查询最低工资的员工信息 select * from emp where sal=(select min(sal) from emp); ------------查询出,部门名称,部门员工数,部门平均工资,部门最低收入的人员姓名,和最高收入的人员 select d.dname,t1.c,t1.avgSal,t1.m…
hive中是不支持子查询的 但是并不意味这不支持in 或者 not in in 或者not in 后边是定值的话是支持的 但是接定制是可以的 例如 select id from table not in(1,2,3) 但是这种是不支持的 select id from table1 not in ( select id from table2 where col1 = ‘a’ ) 我们需要用left join来实现 (1)把table1和table2符合条件的数据进行连接 select t1.id…
聚合函数 count计数 count(*):不全都是NULL.就加1:count(1):当仅仅要有一列是NULL就不会加1:count(col):当col列不为空就会加1 sum求和 sum(可转成数字的值)返回bigint.比方求和后加1,1必须转化成为bigint类型,sum(col)+cast(1 as bigint) avg求平均值 avg(可转化成数字的值)返回double distinct不同值的个数 count(distinct col) Order by 依照某些字段排序,后面能…
由于hive也支持sql,很多人会把hql跟标准sql进行比较,甚至有的时候会直接套用.hive不支持事务也不支持索引,更不支持追加写,但是对于一般的sql都是能够支持的.但是对于一些子查询确实无法支持的,例如 select * from t_ext_1_bkdoubledelete where f1=(select max(f1) from t_ext_1_bkdoubledelete) 这个sql在mysql中是能够支持的,意思是找到val最大的那一行记录,然后在hive中运行确实报错的:替…
SELECT A.* FROM (SELECT CD.*, nvl(CV.SUM_CI_BALANCE, 0) as SUM_CI_BALANCE, nvl(CV.SUM_LN_BALANCE, 0) as SUM_LN_BALANCE FROM OCRM_F_CI_CUST_DESC CD left join (select cust_id, …
这些子查询在oracle和mysql等数据库中都能执行,但是在hive中却不支持,但是我们可以把这些查询语句改为join操作: -- 1.子查询 select * from A a where a.update_time = (select min(b.update_time) from A b) -- 2.in操作 select * from A a where a.dept = 'IT' and a.num ') 改为join操作如下: select t2.* from (select mi…
两个要求交集的表(列)的结构要一致,对应的字段数,字段类型都应该相同:将两个数据的数据列用 UNION ALL 关键字合并:将上面的所有需要比较的列 GROUP BY :最后 HAVING COUNT(任意一列,不能多列)>1,那么就是交集. SELECT a.* FROM( SELECT * from teacher UNION ALL SELECT * from student)a GROUP BY a.id,a.name,a.sex HAVING COUNT(a.sex)…
- 集合中如果含null数据,不可使用not in, 可以使用in- hive只支持where和from子句中的子查询- 主查询和自查询可以不是同一张表 select e.ename from emp e where e.deptno in ( select d.deptno from dept d where d.dname='SALES' or d.dname='ACCOUNTING' ); select * from emp e where e.deptno not in ( select…