Hive 中类SQL语言中的 oder by,gruop by的区别

order by 是按字段排序

group by 是按字段分组,即select 字段必须是“分组依据字段”

 order by 从英文翻译出发,就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。 
 group by 从英文翻译理解,就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。 
   

关于“聚合函数”,简单的理解就是像sum()、count()、avg()等都是“聚合函数” 
使用group by 的目的就是要将数据分类汇总。

(1)原始数据表

类别数量备注
a2a_001
a3a_002
b7a_003


(2)group by 语句

select 类别, sum(数量) as 数量之和
from A
group by 类别

(2)的结果如下:

类别数量
a5
b7

(3) group by 与 order by 语句

select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc

(3)的结果如下:

类别数量
b7
a5

(4)总结

order by是按指定的列的升序或降序来给查询结果排序, 
它不需要查询结果中出现order by的栏位. 
更改Order by里的栏位只会影响查询结果的顺序,而不影响查询出的记录总数,和每条记录的内容.

group by是按指定的列对满足Where条件的所有记录分组,并对组内的一些数值型栏位计算出每组的一个统计指标,如求和、求个数、求平均值、求最大值、求最小值、、、、、、、 
它对查询结果有个要求:查询结果中的出现的栏位必须是Group by中栏位的子集。 
更改Group by里栏位的顺序不会对查询结果有任何影响; 
但是更改Group by的栏位,会对查询得到的记录数量,以及各个汇总函数的结果造成影响。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值