Hive学习之Union和子查询】的更多相关文章

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 )…
一.高级子查询 1.多列子查询 定义:主查询与子查询返回的多个列进行比较 多列子查询中的比较分为两种:成对比较:不成对比较 实例:查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id, manager_id, department_id 成对比较: SELECT employee_id, manager_id, department_id FROM employees WHERE (manager_id, department_id…
子查询 在開始了解子查询之前,首先做下准备工作,建立3个表, 一个是customers表,当中包含:客户名字.客户ID.客户Tel等. 一个是orders表,当中包含:订单号.客户ID.订单时间等. 一个是ordersitems表,当中包含:订单物品.订单号.物品数量. 准备工作 1.建表 建customers表的命令例如以下,其他的表与之相似: create table customers(cust_name varchar(10),cust_id int(10),cust_tel varch…
知识点八:子查询(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…
1 外键 外键:foreign key,外面的键(键不在自己表中),如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称为外键. 1.1 增加外键 外键可以在创建表的时候或创建表之后增加(但是要考虑数据的问题). 方案一:在创建表的时候增加外键,在所有的表字段之后,使用foreign key(外键字段) references 外部表 (主键字段); -- 创建班级 CREATE TABLE my_class( id INT PRIMARY KEY AUTO_INCREMENT,…
注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作测试) 一.子查询 1.where型子查询:把内层查询的结果作为外层查询的比较条件 1.1 查询id最大的一件商品(使用排序+分页实现) :mysql> SELECT goods_id,goods_name,shop_price FROM goods ORDER BY goods_id DESC L…
  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 termina…
Oracel提供了三种类型的集合操作:各自是并(UNION) .交(INTERSECT). 差(MINUS) UNION :将多个操作的结果合并到一个查询结果中,返回查询结果的并集,自己主动去掉反复的部分. UNION ALL:将多个操作的结果合并到一个查询结果中,可是保留反复的内容. INTERSECT: 返回多个操作结果中同样的部分. MINUS:返回两个查询结果的差集,去掉反复的部分. 基本的语法格式为: SELECT * FROM  table_name 1 [union , union…
聚合函数 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 依照某些字段排序,后面能…
一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规则: (1)可以在主查询的where.select.from.having的后面放置子查询,但是不可以在在group by后面防止子查询. (2)将子查询放到括号中去. (3)强调from后面放置子查询. (4)主查询和子查询使用的可以不是同一张表. (5)一般不在主查询中使用order by,但是…
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为…
请注明转载地址:http://www.cnblogs.com/arhat 在前几章中,我们把HQL的基本查询学习了一下,但是只有基本查询很显然不能满足我们的需求,那么就需要一下复杂查询比如"连接查询","子查询"等.本章我们就围绕着这两个查询来学习一下. 现在我们的数据库中只有Student和Clazz两张表,同时这两张表有着多对一和一对多的关系,那么我们就根据这两张表来讲述连接查询吧(当然了,各位网友可以根据自身的情况来学习). 在NHibernate中,提供了4…
由于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,                        …
子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串显示,并且显示每个人的主管 连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join     on 2.union       在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实…
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为…
Hive只支持在FROM子句中使用子查询,子查询必须有名字,并且列必须唯一:SELECT ... FROM(subquery) name ...…
union查询就是把2条或者多条sql语句的查询结果,合并成一个结果集. 如:sql1: N行,sql2: M行,sql1 union sql2 ---> N+M行 1.能否从2张表查询再union呢? 可以,union 合并的是"结果集",不区分在自于哪一张表. 2.取自于2张表,通过"别名"让2个结果集的列一致.那么,如果取出的结果集,列名字不一样,还能否union. 可以,而且取出的最终列名,以第1条sql为准 3.union满足什么条件就可以用了? 只…
这些子查询在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…
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为…
多表查询 多表查询,基本规则,通过两表有关联字段的进行条件匹配查询 内连接查询 方式一: SELECT 查看字段名[,查看字段名] FROM 一表名,二表名 WHERE 一/二表.字段 = 一/二表.字段; 方式二: SELECT 查看字段名[,查看字段名] FROM 一表名 INNER JOIN 二表名 on 一/二表.字段 = 一/二表.字段; 外链接查询 左连接查询 SELECT 查看字段名[,查看字段名] FROM 一表名 LEFT JOIN 二表名 on 一/二表.字段 = 一/二表.…
联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select 语句1 Union [union选项] Select语句2........ Union 选项有两个 All:保留所有 Distinct:去重.默认的 联合查询只要求字段一样,与数据类型无关. 意义:两种 1,查询一张表但是需求不同. 2,多表查询,多张表的结构完全一样,保存的数据也一样 Order…
两个要求交集的表(列)的结构要一致,对应的字段数,字段类型都应该相同:将两个数据的数据列用 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)…
一.分组 建表及数据填充语句下载:链接: https://pan.baidu.com/s/1WHYafwqKJEKq1kDwCH_Zlg 提取码: 3wy4 1.1初识分组 分组是按照某一列,将该列中相同多个相同的数据作为一组,整体分成若干组. 例如有如下表: 例如将vend_id作为依据分组,则会分成三组. 所有vend_id = DLL01为一组,所有vend_id = BRS01为一组. 所有vend_id = FNG01为一组. 现在我们有这样一个需求,计算每一个每一个供应商有多少商品.…
上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单.同一个softId,version,pcInfoId的代表是同一个软件,需要去重:同时,如果相同软件里面只要有一个matchResult为2的话,那么同一个softId,version,pcInfoId的数据全部不要. 思路: 1.先找出matchResult为2的softId,version,pcInfoId and softId= 2.考虑查出来的数据的  softId,version,pcInfoId  不在这…
一.多表联合查询 二.子查询 三.动态条件查询 LESSON 4 Displaying Data from Multiple Tables-------------------------------------------------------- 查询s_emp表中最大的工资数,并且显示出这个最大工资数的员工名字 select last_name,max(salary)from s_emp; 多表查询 查询多张表的时候会产生笛卡尔积 为了防止笛卡尔积的产生,我们需要使用某些条件把两张表或多张…
- 集合中如果含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…