1.窗口函数介绍

窗口函数,也叫也叫OLAP函数(Online Anallytical Processing,联机分析处理),可对数据库数据进行实时分析处理。

2.窗口函数入门

2.1 函数说明

窗口函数,也可以叫做开窗函数,其从本质来看是将 MySQL 中一些复杂的查询封装成了窗口的形式,进行数据统计时使用并且操 作十分方便,窗口函数为统计时使用的聚合函数指定一个聚合的范围。

OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化

2.2 函数使用

源数据:

+----------------+---------------------+----------------+
| business.name  | business.orderdate  | business.cost  |
+----------------+---------------------+----------------+
| jack           | 2021-07-07          | 110            |
| tony           | 2021-07-08          | 115            |
| jack           | 2021-08-03          | 123            |
| tony           | 2021-07-04          | 129            |
| jack           | 2021-07-05          | 146            |
| jack           | 2021-10-06          | 142            |
| tony           | 2021-07-07          | 150            |
| jack           | 2021-07-08          | 155            |
| mart           | 2021-10-08          | 162            |
| mart           | 2021-10-09          | 168            |
| neil           | 2021-11-10          | 112            |
| mart           | 2021-10-11          | 175            |
| neil           | 2021-12-12          | 180            |
| mart           | 2021-10-13          | 194            |
+----------------+---------------------+----------------+

计算每个人消费总额,并且按照名字进行分组

 select name,cost,sum(cost) over(partition by name) from business;

可以看到,这里有4个人,所以开了4个窗口,并且每个窗口都统计了单个人的总消费金额

了解了基本的用途之后,我们开始来使用几个基础的函数

  • CURRENT ROW:当前行
  • n PRECEDING:往前 n 行数
  • n FOLLOWING:往后 n 行数据
  • UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点
  • UNBOUNDED FOLLOWING:表示到后面的终点

我将结合案例进行演示,以便更好的理解

案例1:求当前日期的消费总额以及截至当前日期的总消费总额。

思路讲解:利用开窗函数的机制,我们可以在求和的时候进行开窗统计,首先根据日期进行排序,并将上一行的值与本行相加,便可以得出当前日期的总消费金额,以此类推。

 select name,orderdate,cost,sum(cost) over(order by orderdate range between  unbounded preceding and current row)   from business;

3.窗口函数使用

3.1取值函数

first_value():返回分组类第一个值
last_value():返回分组类最后一个值

 select name,cost,first_value(cost) over() `first`,last_value(cost) over() `last`from business;

nth_value():返回分组内第N行

 select name,cost,rank() over() `id`,nth_value(cost,2) over() `nth2`,nth_value(cost,4) over() `nth4`,nth_value(cost,6) over() `nth6` from business;

lag():从当前行开始往前去第N行,默认为NULL
lead():从当前行开始往后去第N行,默认为NULL

需求:查看每个人上次以及下次的购买时间

 select name,cost,lag(orderdate,1,null) over(partition by name order by orderdate) `lag`,lead(orderdate,1,null) over(partition by name order by orderdate) `lead` from business;

ntile():用于将分组数据按照顺序切分成n片

select
name,cost,orderdate,
ntile(5) over(order by orderdate) sorted
from
business;

percent_rank():统计当前行在整个有序窗口中占的百分比数,返回0到1之间变化

select
name,cost,orderdate,
percent_rank() over(order by orderdate)
from
business;

3.2 排序函数

rank():有重复值时候间断排序,例如 1,2,2,4,4,6
dense_rank():有重复值时候不间断排序,例如 1,2,2,3,3,4
row_number():不间断排序,有重复值时,会根据内置算法进行排序,1,2,3,4

张三   20
李四  27
王五  29
赵六  22
田七  26
马八  24
黄九  23
罗十  28
郑三  27
吴四  20
高五  25
薛六  22
楚七  22
朱八  27

用三种方法对年纪进行排序

select
name,age,
rank() over(order by age) `rank`,
dense_rank() over(order by age) `dense_rank()`,
row_number() over(order by age) `row_number`
from stu;

3.3 聚合函数

sum():求和
avg():平均值
max():最大值
min():最小值
count():计数统计

select name,age,
sum(age) over()`sum`,
avg(age) over()`avg`,
max(age) over()`max`,
min(age) over()`min`,
count() over()`count`
from stu;

hive中关于窗口函数的讲解就介绍这么多,希望各位看客多多支持

Hive常用函数介绍(窗口函数)相关推荐

  1. HIVE 常用函数总结

    HIVE 常用函数总结 hive 函数比较多,之前总是随用随查,今天把常用的函数总结一下,以后方便查阅. 本文主要涉及以下几个大面: 1.Hive函数介绍以及内置函数查看 内容较多,见<Hive ...

  2. hive常用函数(一)

    hive常用函数一般分为下面几个部分: 算数运算符:+,- ,*, / 关系运算符:== , <>(不等于) , > , >= , < , <= 逻辑运算符:and ...

  3. Hive常用函数大全一览

    Hive常用函数大全一览 1 关系运算 1.1 1.等值比较: = 1.2 2.不等值比较: 1.3 3.小于比较: < 1.4 4.小于等于比较: <= 1.5 5.大于比较: > ...

  4. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

  5. php spl函数,PHP SPL标准库中的常用函数介绍

    这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...

  6. R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal、fa、fa.parallel、factor.plot、fa.diagram、scree

    R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal.fa.fa.parallel.factor.plot.fa.diagram.scree 目录

  7. 最详细的HIve常用函数整理及案例演示

    Hive常用函数 一.测试数据集 1.1 测试数据集: 1.2 结果展示 二.常用函数 2.1 关系运算 2.1.1 常见关系运算符 2.1.2 空值判断 2.1.3 非空判断 2.1.4 LIKE ...

  8. oracle常用函数number,Oracle 常用函数介绍

    Oracle常用函数介绍,包括日期函数.类型转换函数 常用日期函数 1.add_months()函数可以得到指定日期之前或之后n个月的日期 date_value:=add_months(date_va ...

  9. Hive常用函数 - abs

    Hive常用函数 - abs 官方解释 abs(x) - returns the absolute value of x 个人理解 就是返回函数括号内数字的绝对值. 想要获取该数的绝对值的时候就用这个 ...

最新文章

  1. GridView强制换行与自动换行
  2. BZOJ 3884 上帝与集合的正确用法 (欧拉定理)
  3. Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)
  4. Ansible16:Playbook高级用法
  5. 【案例】ZigBee无线模块在城市智能照明上的应用
  6. 怎样让手中的钱成为生财工具
  7. 计算机网络引言,[计算机网络]Ch.1引言
  8. 7-43 币值转换 (20分)_「篮球看吧」40岁了!生涯25年!还狂砍33分+联赛得分王,这他么是人吗...
  9. 在Linux上安装Chef工作站
  10. hadoop 3.x 关闭安全模式
  11. latex sign_LATEX科研论文写作教程
  12. 2.4 HDFS组成架构
  13. WCF把书读薄(3)——数据契约、消息契约与错误契约
  14. Kconfig语法学习
  15. 实盘中在vnpy多策略多交易对交易
  16. 中国牛市短线炒股有哪些特征中国牛市炒股如何操作呢
  17. win10系统设置番茄家园开机音乐以及关机音乐(亲测有效)
  18. 基于单片机的室内空气质量检测系统(甲烷甲醛)
  19. 正则表达式 基本汉字 特殊字符
  20. 2022年全国最新高级消防设施操作员模拟题库及答案

热门文章

  1. SATA接口的硬件基础知识
  2. 2010.5.11项目管理群主题:网游那些事-DDV731731-SSE
  3. 深度学习:Keras入门(一)之基础篇
  4. JS---event事件
  5. jq里的event对象
  6. php 获取当前IP地址
  7. 通过一个命令返回上级多层目录的方法
  8. dod刷服务器文件,编辑修改
  9. 如何搭建一个自己的网站-服务器篇
  10. 爆料:955不加班公司名单(2023最新版)