Hive:聚合函数、GROUP BY、ORDER BY、LIMIT、执行顺序和JOIN、函数

这篇具有很好参考价值的文章主要介绍了Hive:聚合函数、GROUP BY、ORDER BY、LIMIT、执行顺序和JOIN、函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.聚合函数
  • 常见的聚合函数:Count、Sum、Max、Min和Avg
  • 特点:不管原始数据多少条,聚合之后只有一条
  • Count(column)返回某列的行数,不包括NULL值

hive聚合,hive,hadoop,大数据

2.GROUP BYhive聚合,hive,hadoop,大数据hive聚合,hive,hadoop,大数据
  • select中的字段要么是GROUP BY字段,要么是被聚合函数应用的字段
2.HAVING
  • WHERE中无法出现聚合函数,所以有了HAVING
  • WHERE是分组前过滤,HAVING是分组后过滤

为什么WHERE中不能使用聚合函数?

  • 因为使用WHERE的时候,只能从表格字段中直接查找然后过滤,如果用到计算函数,不是表格现有的直接可以查到的,就不可以作为过滤条件,对于表格现有的 length() 等函数还是可以的
  • 而且因为WHERE的执行顺序在GROUP BY之前,而聚合函数只有在GROUP BY之后才能进行,因此WHERE中不能有聚合函数

hive聚合,hive,hadoop,大数据
使用having时一定要注意和select中的某个聚合函数一样,且可以使用其别名。虽然having在select之前,但是就是可以,这样SQL的性能更好,不用执行两遍聚合函数了

3.ORDER BY
  • 默认按照升序(ASC),降序使用DESC
select * from t order by name desc, age asc; --先根据name降序,再根据age升序
4.LIMIT
  • 用于限制SELECT语句返回的行数
  • 接收一个或者两个参数,都是非负整数
  • 第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。单个参数时,偏移量默认为0。
5.执行顺序

hive聚合,hive,hadoop,大数据

6.Join

hive聚合,hive,hadoop,大数据
内连接
hive聚合,hive,hadoop,大数据
左连接
hive聚合,hive,hadoop,大数据

7.函数分类(UDF,UDAF,UDTF)
show functions; //查看当下可用的所有函数
describe function extended funcname; //查看funcname的使用

hive聚合,hive,hadoop,大数据
hive聚合,hive,hadoop,大数据文章来源地址https://www.toymoban.com/news/detail-727253.html

8.常用内置函数
------------String Functions 字符串函数------------
select length("itcast");
select reverse("itcast");

select concat("angela","baby");
--带分隔符字符串连接函数:concat_ws(separator, [string | array(string)]+)
select concat_ws('.', 'www', array('itcast', 'cn'));

--字符串截取函数:substr(str, pos[, len]) 或者  substring(str, pos[, len])
select substr("angelababy",-2); --pos是从1开始的索引,如果为负数则倒着数
select substr("angelababy",2,2);
--分割字符串函数: split(str, regex)
--split针对字符串数据进行切割  返回是数组array  可以通过数组的下标取内部的元素 注意下标从0开始的
select split('apache hive', ' ');
select split('apache hive', ' ')[0];
select split('apache hive', ' ')[1];


----------- Date Functions 日期函数 -----------------
--获取当前日期: current_date
select current_date();
--获取当前UNIX时间戳函数: unix_timestamp
select unix_timestamp();
--日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp("2011-12-07 13:01:03");
--指定格式日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss');
--UNIX时间戳转日期函数: from_unixtime
select from_unixtime(1618238391);
select from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');

--日期比较函数: datediff  日期格式要求'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'
select datediff('2012-12-08','2012-05-09');
--日期增加函数: date_add
select date_add('2012-02-28',10);
--日期减少函数: date_sub
select date_sub('2012-01-1',10);


----Mathematical Functions 数学函数-------------
--取整函数: round  返回double类型的整数值部分 (遵循四舍五入)
select round(3.1415926);
--指定精度取整函数: round(double a, int d) 返回指定精度d的double类型
select round(3.1415926,4);
--取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数
select rand();
--指定种子取随机数函数: rand(int seed) 得到一个稳定的随机数序列
select rand(3);


-----Conditional Functions 条件函数------------------
--使用之前课程创建好的student表数据
select * from student limit 3;

--if条件判断: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
select if(1=2,100,200);
select if(sex ='男','M','W') from student limit 3;

--空值转换函数: nvl(T value, T default_value)
select nvl("allen","itcast");
select nvl(null,"itcast");

--条件转换函数: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end;
select case sex when '男' then 'male' else 'female' end from student limit 3;

到了这里,关于Hive:聚合函数、GROUP BY、ORDER BY、LIMIT、执行顺序和JOIN、函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql GROUP BY 怎么 order by 排序

    在 MySQL 中使用 GROUP BY 子句时,如果需要对结果进行排序,可以使用 ORDER BY 子句来对分组后的结果进行排序。 ORDER BY 子句应该放在 GROUP BY 子句之后,使用逗号来分隔需要排序的列,并在排序列后指定排序顺序。例如: 在这个例子中,SELECT 语句选择了表 table1 中的列 column1 和

    2024年02月16日
    浏览(39)
  • SQLite学习(六)SQLite的GLOB、LIMIT、ORDER、GROUP UP子句语法和应用

    在上一篇《SQLite学习(五)SQLite的WHERE、AND、OR、LIKE子句语法和应用》 中,讲解了 SQLite中 WHERE、AND、OR、LIKE 子句的语法,在本篇博客中,将继续讲解 SQLite 子句的基本语法。 同学们将学习到: SQLite GLOB 子句语法 SQLite LIMIT 子句语法 SQLite ORDER 子句语法 SQLite GROUP UP 子句语法

    2024年02月06日
    浏览(58)
  • 【ABAP】OPEN SQL(七)「GROUP BY | HAVING | ORDER BY」

    💂 作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较

    2024年02月08日
    浏览(45)
  • 【mysql学习篇】Order by与Group by优化以及排序算法详解

    Case1: 分析: 利用 最左前缀 法则:中间字段不能断,因此查询用到了name索引,从key_len=74也能看出,age索引列用在排序过程中,因为Extra字段里没有using filesort 注意: order by age 虽然用到了索引,但是不会在key_len列体现 Case 2: 分析: 从explain的执行结果来看:key_len=74,查询

    2024年02月15日
    浏览(47)
  • Elasticsearch增删改查、count、sum、group by、order by、like

    1、查找所有索引 2、查询 3、count 4、查询SQL:

    2024年02月16日
    浏览(29)
  • 如何使用SQL系列 之 如何在SQL中使用GROUP BY和ORDER BY

    结构化查询语言(SQL)数据库可以跨多个表存储和管理大量数据。对于大型数据集,理解如何排序数据是很重要的,特别是对于分析结果集或为报告或外部通信组织数据。 SQL中有两个常用的用于数据排序的语句: GROUP BY 和 ORDER BY 。 GROUP BY 语句根据查询中指定的列对数据进行分组

    2024年02月09日
    浏览(41)
  • 玩转Mysql系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑

    这是Mysql系列第7篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 本章内容 详解排序查询 详解limit limit存在的坑 分页查询中的坑 排序查询(order by) 电商中:我们想查看今天所有成交的订单,按照交易额从高到低排序,此

    2024年02月11日
    浏览(33)
  • spark 的group by ,join数据倾斜调优

    spark任务中最常见的耗时原因就是数据分布不均匀,从而导致有些task运行时间很长,长尾效应导致的整个job运行耗时很长 首先我们要定位数据倾斜,我们可以通过在spark ui界面中查看某个stage下的task的耗时,如果发现某些task耗时很长,对应要处理的数据很多,证明有数据倾斜

    2024年02月21日
    浏览(34)
  • hive order by length() 报错

    hql 如下 select length(tag) from table1 order by length(tag) limit 20; 报错FAILED: SemanticException [Error 10004]: Line…Invalid table alias or column reference ‘tag’: (possible column names are: _c0) FAILED: SemanticException [Error 10004]: Line…Invalid table alias or column reference ‘tag’: (possible column names are: _c0) 修改 用别名替

    2024年01月21日
    浏览(25)
  • Hive 中 sort by 和 order by 的区别

    order by 会对输入做 全局排序 ,因此只有1个reducer(多个reducer无法保证全局有序),会导致当输入规模较大时,需要较长的计算时间。 sort by 不是全局排序,其在数据进入 reducer 前完成排序。 因此,如果用 sort by 进行排序,并且设置 mapred.reduce.tasks1 , 则 sort by 只保证每个

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包