Hello大家好,今天我们继续上篇文章,为大家分享一些Hive在工作中常用的聚合函数,分组函数,排序等等…………

我们就直接从聚合函数开始,什么是聚合函数呢,其实就是一句话,将多行合并为一行,就这么简单,常用到的聚合函数主要有一下几种:sum,count,max,min,avg等,其中注意的是count是对记录的统计,sum是对值的累加~

假设我们有一张员工薪资表(emp_table),现在要统计员工的最大,最小,平均工资和所有工资的和,代码如下:

hive> select max(salary),min(salary),avg(salary),sum(salary) from emp_table;

查询记录记录数

hive> select count(*) from emp_table;hive> select count(1) from emp_table;-- 注意的是,上述俩种方式一样-- count() count(1) :这两种方式是一样的。

接下来我们看看Hive中的几种排序方式

首先第一个排序是order by排序,order by会对输入的数据做全局的排序,所以只会有一个reduce,这样的话在大量的数据面前查询效率较低,费时较长

hive> select * from salary order by salary desc;-- desc 升序 asc降序

另一个就是sort by排序,sort by排序不是全局排序,他在进入reduce阶段之前就已经排序,使用sort by排序可以设定reduce的数量

-- 启动两个reduceset mapred.reduce.tasks=2; 

启动后执行sort by排序你就会发现reduce启动了2个

MapReduce Jobs Launched: Stage-Stage-1: Map: 1 Reduce: 2 Cumulative CPU: 6.07 sec HDFS Read: 11241 HDFS Write: 460 SUCCESSTotal MapReduce CPU Time Spent: 6 seconds 70 msec

接下来是distribute by排序, distribute by通过计算一个列的值进行分区,有几个分区sort by就执行几次,也就会有多少个reduce

-- 通过 distribute by 对列计算值分区,然后查询排序select * from salary distribute by depart sort by salary asc;

最后一个是cluster by聚集排序,就是distribute by + sort by的组合,但是只能默认升序,不支持自定义升序排序

hive> select * from salary cluster by salary;

分组函数

在hive中我们使用group by方法对数据进行分组,hive有个特殊的嗜好,就是在group by分组的字段一定要出现在select的查询字段中,否则报错

接下来我们就对我们的员工表按照部门进行排序

hive> select depar from emp group by depar;--结果研发部市场部过控部……………………

查询每个部门的平均薪资

hive> select depar,avg(salary) avg_sal from emp group by depar;研发部 15400.345234523423市场部 34243.423424过控部 34242.5454654654……………………-- 数据胡编乱造的

查询平均薪资大于2000的部门

hive> select depar,avg(salary) from emp group by deptar having avg(salary) > 2000;

按照部门和入职时间进行分组

hive> select depar,hiredate from emp group by depar,hiredate;

按照部门和入职时间进行分组并计算出每组的人数

hive> select depar,hiredate,count(ename) from emp group by depar,hiredate;

在hive分组中还有一个case when then end分组方式,该分组方式不会经过mr处理,示例如下:

查询员工的姓名和工资等级,按如下规则显示

salary小于等于1000,显示LOWER,

salary大于等于1000且小于等于2000,显示MIDDLE,

salary大于2000小于等于4000,显示HIGH

salary大于4000显示HIGHEST

select ename,salarycasewhen salary > 0 and salary <= 1000 then 'LOWER'when salary > 1000 and salary <= 2000 then 'MIDDLE'when salary > 20000 and salary <= 4000 then 'HIGH'ELSE 'HIGHEST'endfrom emp;

本片文章参考资料

https://blog.csdn.net/Realoyou/article/details/79189726https://blog.csdn.net/yu0_zhang0/article/details/79011192https://blog.csdn.net/doveyoung8/article/details/80022579http://www.cnblogs.com/lishouguang/p/4560837.htmlhttps://blog.csdn.net/qq_32941881/article/details/82347933

强烈推荐:

https://www.iteblog.com/archives/2258.html#1UNIX_from_unixtime

hive 时间函数_Hive常用大法(聚合/排序/分组)相关推荐

  1. hive时间函数的使用

    时间函数的变形 selectday -- 时间,date_add(day,1 - dayofweek(day)) as week_first_day -- 本周第一天_周日,date_add(day, ...

  2. mysql常用日期时间函数_MySql常用日期时间函数

    返回当前的日期和时间 select MICROSECOND(SYSDATE()); --0 select SECOND(SYSDATE()); --33 select MINUTE(SYSDATE() ...

  3. hive 开窗函数_Hive的架构剖析

    本文主要介绍Hive的架构和以及HQL的查询阶段,主要内容包括: Hive的架构 架构中的相关组件介绍 HQL的查询阶段 Hive的架构 hive的基本架构图如下图所示: 相关组件介绍 数据存储 Hi ...

  4. hive时间函数入门

    1)当前系统时间函数:current_date().current_timestamp().unix_timestamp() -- 函数1:current_date(); 当前系统日期 格式:&quo ...

  5. mysql最大时间函数_mySql常用时间函数

    1.取一个日期字段的年月: 方法一:select date_format(日期字段,'%Y-%m') as '日期' from 表 方法二:使用left()函数来截取 select left(日期字段 ...

  6. 分析函数hive计算均值_hive常用函数及优化

    常用函数 1.数学函数 round(double a,int d ) 四舍五入 floor(double a)对给定数据进行向下舍入最接近的整数.例如floor(21.8),返回21. ceil(do ...

  7. hive in 字符串_hive常用函数 concat concat_ws row_number

    在应用hive在数据仓库中进行数据提取中经常会用户很多函数,为了记录自己常用的hive函数,特写这个系列的文章,记录下自己的使用心得,其中包括使用场景.用法等. 1.concat concat是字符拼 ...

  8. hive中字段长度函数_Hive常用函数总结

    hive函数的分类 hive的客户端 显示当前会话有多少函数可用 SHOW FUNCTIONS; 如: hive> show functions ; OK ! != % 显示函数的描述信息 DE ...

  9. hive 复合类型_hive 常用函数整理 9.复合类型操作

    1. map类型构建: map 语法: map (key1, value1, key2, value2, -) 说明:根据输入的key和value对构建map类型 举例: hive> Creat ...

最新文章

  1. 一对多查询,合并成一条数据
  2. 手机控制树莓派linux,怎样用PC或手机远程控制树莓派
  3. 加快发展设施业 农业大健康-林裕豪:从玉农业践行基础支撑
  4. python 3.7.3 thinker_GitHub - thinkerwalker/python3-bin
  5. 把docker当做绿色打包工具
  6. 【数据库】一篇文章搞懂数据库隔离级别那些事(LBCC,MVCC)
  7. 二、express中间件
  8. 后端连接oracle,【后端开发】php怎么远程连接oracle
  9. Overview of HEVC之4 帧内预测
  10. python导入turtle报错_由于“未定义宽度错误”,我无法将turtle模块导入Python2.7.10...
  11. excel判断单元格包含指定内容的函数用=IF(COUNTIF(A1,*内容*),0,1)
  12. 什么是数据库的三大范式?
  13. 《分布式系统原理与范型》习题答案 5.同步
  14. Nsight Compute(NCU) Scheduler Statistics 数据解读
  15. pdf文件插入电子签名
  16. kero入门学习总结
  17. 地铁工程安全生产预警系统价格
  18. 关于微信小程序认证问题
  19. 汽车行业:充分借力数据价值,推动数字化营销链路闭环
  20. 知乎 mac apfs_APFS,Mac OS Extended(HFS +)和ExFAT之间有什么区别?

热门文章

  1. 华为云薅羊毛攻略来袭,走过路过不要错过
  2. python 读取数据库内存爆_解决python读取几千万行的大表内存问题
  3. 计算机成原理第2版,清华大学出版社-图书详情-《计算机组成原理(第2版)》...
  4. 【洛谷1527】 [国家集训队]矩阵乘法(整体二分)
  5. 一个简单的shell文件备份脚本
  6. 微信小程序连接本地接口(转)
  7. JavaScript 的call 与 apply
  8. Java并发包源码学习之AQS框架(三)LockSupport和interrupt
  9. mysql 数据表中查找重复记录
  10. Netty服务器无限循环给客户端发送数据