hive 多表查询,转化为一个mapreduce的作业
hive>desc dept;
deptno
double
dname
string
loc
string
hive>desc emp;
empno
double
ename
string
job
string
mgr
double
hiredate
string
sal
double
comm
double
deptno
double
hive>desc salgrade;
grade
double
losal
double
工资下限
hisal
double
工资上限
等值连接
查询员工信息:员工号,姓名,月薪,部门名称
select ,,,
from emp e,dept d
where =;
不等值连接
查询员工信息:员工号,姓名,月薪,工资级别
select ,,,
from emp e,salgrade s
where between and ;
外连接
按部门统计员工人数:部门号,部门名称,人数
select ,,count()
from emp e,dept d
where =
group by ,;
注意:没有包含在聚合函数中的列,都必须在group by 子句的后面
可以用以下的语句进行检查
hive>select count(*) from emp;
hive>select count * from dept;
通过外连接可以将对于连接条件不成立的记录仍然包含在最后的结果中
左外连接,连接条件不成立,连接条件左边的表仍然可以包含在最后的结果中
右外连接,连接条件不成立,连接条件右边的表仍然可以包含在最后的结果中
右外连接操作
select ,,count()
from emp e right outer join dept d
on (=)
group by ,;
自连接
自连接的核心:通过表的别名将同一张表视为多张表
查询员工的姓名和员工的老板姓名
select ,
from emp e,emp b
where =;