数据仓库工具 hive的入门(四)HQL操作之--DQL命令

**Hive命令实战操作之 – DQL命令
@DQL – Data Query Language 数据查询语言

提示:本文章内容取自来源: 拉勾教育大数据高薪训练营




前言

提示:本文章对于初学者准备,希望对大家有所帮助。如果有什么建议和疑问,请留言给我,我会不断完成完善。


HQL操作之–DQL命令

第 1 节 基本查询

1.全表查询
select * from emp;
2.选择特定列查询
select ename, sal, comm from emp;
3. 使用函数
select count(*) from emp;
select sum(sal) from emp;
select max(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;
4. 使用limit子句限制返回的行数
select * from emp limit 3;

第 2 节 where子句

1select * from emp
where sal > 2000;

注:
1.where 子句中不能使用列的别名;

2.where子句中会涉及到较多的比较运算 和 逻辑运算;
3.where子句针对表中的数据发挥作用;having针对查询结果(聚组以后的结果)发挥作用
4.where子句不能有分组函数;having子句可以有分组函数

第 3 节 group by子句

GROUP BY语句通常与聚组函数一起使用,按照一或多个列对数据进行分组,对每个组进行聚合操作。

 计算emp表每个部门的平均工资
select deptno, avg(sal)
from emp
group by deptno; 

计算emp每个部门中每个岗位的最高薪水
select deptno, job, max(sal)
from emp
group by deptno, job

求每个部门的平均薪水大于2000的部门
select deptno, avg(sal)
 from emp
group by deptno
having avg(sal) > 2000;

注:having只用于group by分组统计之后

第 4 节 表连接

Hive支持通常的SQL JOIN语句。默认情况下,仅支持等值连接,不支持非等值连
接。

  1. 内连接: [inner] join
  2. 外连接 (outer join)
  • 左外连接。 left [outer] join,左表的数据全部显示
  • 右外连接。 right [outer] join,右表的数据全部显示
  • 全外连接。 full [outer] join,两张表的数据都显示
-- 内连接
select * from u1 join u2 on u1.id = u2.id;

-- 左外连接
select * from u1 left join u2 on u1.id = u2.id;

-- 右外连接
select * from u1 right join u2 on u1.id = u2.id;

-- 全外连接
select * from u1 full join u2 on u1.id = u2.id;

第 5 节 排序子句

5.1 全局排序(order by)

order by 子句出现在select语句的结尾;order by执行全局排序,只有一个reduce;

order by子句对最终的结果进行排序;

默认使用升序(ASC);可以使用DESC,跟在字段名之后表示降序;

-- 多列排序
select empno, ename, job, mgr, sal + nvl(comm, 0) salcomm,
deptno
 from emp
order by deptno, salcomm desc;

-- 排序字段要出现在select子句中。以下语句无法执行(因为select子句中缺少
deptno):
select empno, ename, job, mgr, sal + nvl(comm, 0) salcomm
from emp
order by deptno, salcomm desc;

5.2 内部排序(sort by)

sort by为每个reduce产生一个排序文件,在reduce内部进行排序,得到局部有序的结果;

-- 设置reduce个数
set mapreduce.job.reduces=2;

-- 按照工资降序查看员工信息
select * from emp sort by sal desc;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值