文章目录

  • 1 窗口函数概述
  • 2 语法规则
  • 3 窗口聚合函数的使用
  • 4 窗口表达式
  • 5 窗口排序函数
    • 5.1 row_number家族
    • 5.2 ntile函数
  • 6 窗口分析函数

最近工作中经常遇到窗口函数,看了一些视频讲的不是很清楚,于是又查阅了一些资料,通俗的学透它,理解它,之后忘记也可以看这个想起来

1 窗口函数概述


直观去感受一下窗口函数和group by分组之间的区别

2 语法规则

3 窗口聚合函数的使用

主要包括sum,max,min,avg,接下来以sum为例,其它都类似。窗口函数配合聚合函数功能非常强大,在工作中用的很多

特别注意的点:

(1)要不要使用order by。order by当且仅当 在聚合函数中是累计求和的概念,
(2)order by 后面加不加窗口表达式,如果不加,默认从第一行到当前行
(3)上面两个可以溯源到官网:窗口函数

4 窗口表达式


一些例子可供参考

5 窗口排序函数

5.1 row_number家族

rank:在每个分组中,为每行分配一个从1开始的序列号,考虑重复,例如[1,2,2,4]
row_number:在每个分组中,为每行分配一个从1开始的唯一序列号,递增不重复,例如[1,2,3,4]
dense_rank:在每个分组中,为每行分配一个从1开始的序列号,考虑重复,例如[1,2,2,3]

记忆方法:
对于row_number理解它为行号就行,行号肯定是不重复的;对于dense_rank,理解dense,减少,说明如果出现重复的,序号数字会小于行数。记忆两个剩下的就记住了

注意:
这里order by 不要有累计的想法,但原理上窗口大小还是累计增加的,为了搞混,我们只需要记住这个就是排序

5.2 ntile函数

6 窗口分析函数


举个例子,以LAG为例

FIRST_VALUE:如果出现order by 就是截止到当前行的第一行
LAST_VALUE:如果出现order by 就是截止到当前行的最后一行

【Hive】窗口函数详解相关推荐

  1. 大数据技术-hive窗口函数详解

    有不少同学一听这个标题,hive窗口函数是什么鬼?没听说过还有窗口函数这个东西啊,其实它的用处可大了,下面听小千慢慢道来. hive窗口函数 窗口函数指定了函数工作的数据窗口大小(当前行的上下多少行) ...

  2. Hive窗口函数详解

    1.概述 (1)窗口函数是一组特殊函数 ①扫描多个输入行来计算每个输出值,为每行数据生成一行结果 ②可以通过窗口函数来实现复杂的计算和聚合 (2)语法 Function (arg1,..., arg ...

  3. hive的窗口函数详解

    1.1 hive窗口函数 窗口函数是什么鬼? 窗口函数指定了函数工作的数据窗口大小(当前行的上下多少行),这个数据窗口大小可能会随着行的变化而变化.窗口函数和聚合函数区别? 窗口函数对于每个组返回多行 ...

  4. Hive入门详解操作

    Hive 第一章 Hive简介 1.1. Hive的简介 1.1.1 hive出现的原因 FaceBook网站每天产生海量的结构化日志数据,为了对这些数据进行管理,并且因为机器学习的需求,产生了hiv ...

  5. Hive beeline详解

    Hive客户端工具后续将使用Beeline 替代HiveCLI ,并且后续版本也会废弃掉HiveCLI 客户端工具,Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于SQLLi ...

  6. Hive Metastore详解大全

    1.介绍 Hive所有表和分区的元数据都通过Hive Metastore进行访问.使用JPOX ORM解决方案(Data Nucleus)持久化元数据,因此它支持的任何数据库都可以被Hive使用.它支 ...

  7. MySQL/Hive 常用窗口函数详解及相关面试题

    目录 一.窗口函数概述: 1.窗口函数的分类 2.窗口函数与普通聚合函数的区别: 二.窗口函数的基本用法 1.基本语法 2.设置窗口的方法 1)window_name 2) partition by ...

  8. java调用kettle连hive_使用java连接hive,并执行hive语句详解

    安装hadoop 和 hive我就不多说了,网上太多文章 自己看去 首先,在机器上打开hiveservice hive --service hiveserver -p 50000 & 打开50 ...

  9. concat 不是可以识别的 内置函数名称。_新特性解读 | MySQL 8.0 窗口函数详解

    背景 一直以来,MySQL 只有针对聚合函数的汇总类功能,比如MAX, AVG 等,没有从 SQL 层针对聚合类每组展开处理的功能.不过 MySQL 开放了 UDF 接口,可以用 C 来自己写UDF, ...

最新文章

  1. 解决phpmyadmin3.4空密码登录被禁止登陆的方法
  2. IIS6+Tomcat7整合
  3. Sublime Text如何安装和卸载插件
  4. join left semi_HIVE--left semi join
  5. Qt模态界面设置setWindowModality禁止其他界面响应
  6. SQLServer常用系统视图
  7. php 时间戳获取周几,PHP实现根据时间戳获取周几的方法,php戳获取周_PHP教程
  8. SVN使用方法及问题解决
  9. python sort sorted 排序详解
  10. f5 系统损坏,重新安全系统
  11. No module named ‘lightgbm‘
  12. 怎么看外文文献的影响因子_怎么看文章的影响因子?
  13. 一文带你彻底了解电子灌封(灌胶)工艺技术
  14. 互联网晚报 | 12月9日 星期四 | 微博正式登陆港交所;OPPO官宣首款自研芯片即将发布;腾讯启动“技术公益创投计划”...
  15. 腾讯云通信音视频通话最小化悬浮小窗
  16. python 实现一个反向单位矩阵
  17. winscp 进入mysql命令_Winscp使用密钥登录
  18. 无线路由的四种加密方式
  19. 利用摄像头实现人员活动检测(python+openCV)
  20. VSCode调试C/C++项目

热门文章

  1. 什么是领域驱动设计?
  2. 【0109】Linux系统监测工具sysstat介绍
  3. 图表点编辑数据无反应_我快疯了!为什么我的excel里的图表不能编辑数据!
  4. 手把手硬件电路详细设计过程
  5. Matlab中三维直方图的显示方法
  6. 双向绑定 / proxy 代理 整理
  7. LINEOUT、SPKOUT、LINEIN、MICIN端口区别
  8. python 最简单的画图
  9. 中软国际首届嘉年华晚会 创新网络年会PK“春晚”
  10. 深圳神目信息:打造AI+物联网开发中台, 赋能万物智联