应用场景

(1)用于分区排序

(2)Top N

(3)层次查询

常用分析函数

| 分析函数 | 描述 | | --- | --- | | RANK | 返回数据项在分区中的排名。排名值序列可能会有间隔 | | DENSE_RANK | 返回数据项在分区中的排名。排名值序列是连续的,没有间隔 | | PERCENT_RANK | 计算当前行的百分比排名:(x - 1)/(窗口分区中的行数 - 1) | | CUME_DIST | 统计小于或等于当前值的行数占总行数的比例:

x/分区行数 | | ROW_NUMBER | 确认分区中当前行的序号 | | NTILE | 将每个分区的行尽可能均匀地划分为指定数量的分组 |

语法:analytics_functions over() clause

准备了一个表,用于测试:

create table test.gid_pv(

gid string comment '商品ID'

,dt string comment '日期'

,pv string comment '访问次数'

) comment '商品访问次数'

row format delimited

fields terminated by ','

collection items terminated by '\n'

stored as textfile

;

数据如下:

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-10 1

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-11 5

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-12 7

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-13 3

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-14 2

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-15 4

0006D2BC-4DF9-4C0B-83AD-0183789E78D4 2020-01-16 4

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-10 2

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-11 9

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-12 3

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-13 1

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-14 1

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-15 8

993BD7AD-3B62-BA0C-15AE-A14B85921889 2020-01-16 2

RANK函数会返回数据项在分区中的排名。OVER子句中的ORDER BY语句来确定根据哪个值进行排名。如果多行中的排序值相同,则会有相同的排名。如果有排名相同的情况下,则会在名次中留下空位。例如,如果两行排名为3,则下一个排名为5。DENSE_RANK()不会出现这种情况,具体可以对比一下

select

gid

,dt

,pv

,rank() over (partition by gid order by pv desc) as pre_total_pv_rank

,dense_rank() over (partition by gid order by pv desc) as pre_total_pv_dense_rank

from test.gid_pv

order by

gid

,dt

;

上面的两个是排序函数,如果只想给当前行编个号呢?

select

gid

,dt

,pv

,row_number() over (partition by gid order by pv) as pre_total_pv_row_number

from test.gid_pv

order by

gid

,dt

;

CUME_DIST函数计算分区中当前行的相对排名:(前面的行数)/(分区中的总行数)

如果有相等值的行(取决于OVER子句中的order by):(前面的行数+相等值行数)/(分区中的总行数)一般默认升序即可。

select

gid

,dt

,pv

-- (前面的行数)/(分区中的总行数),如果有相等值的行:(前面的行数+相等值行数)/(分区中的总行数),cume_dist() over (partition by gid order by pv) as pre_total_pv_cume_dist

from test.gid_pv

order by

gid

,dt

;

结果数据:

如果想把某个分组内分成比较均匀的几份,可以使用 ntile 函数:(比如想要统计消费金额前 50%的用户的平均消费,可以按照消费金额排序,分成 2 份。)

select

gid

,dt

,pv

,ntile(4) over (partition by gid order by pv) as pre_total_pv_ntile

from test.gid_pv

order by

gid

,dt

;

结果如下:

参考

订阅

分析函数hive计算均值_Hive 分析函数相关推荐

  1. 分析函数hive计算均值_Hive中的函数

    函数分类 UDF user-define-function:用户定义函数 进一条出一条 UDAF user-define-aggregation-function:用户定义聚合函数 进多条出一条 如: ...

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

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

  3. oracle上浮下浮分析函数_Oracle SQL高级编程——分析函数(窗口函数)全面讲解...

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 概述 分析函数是以一定的方法在一个与当前行相关的结果子集中进行计算,也称为窗口函数. 一般结构为 Function(arg1 , arg2 ...

  4. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  5. linux 计算标准差,shell计算均值和标准差的工具:datamash

    前言 shell下经常需要处理数据,需要计算均值和标准差,最近在分析EXT4的r_await的分布情况,需要计算下在一定的读写模式下,块设备的读延迟分布. 这已不是第一次有类似的需求了,每次都要awk ...

  6. OpenCV计算均值和方差

    OpenCV 计算均值和标准方差: 计算矩阵均值,src是1-4个通道,返回Scalar,保存了1-4通道的均值,结果值位double,Scalar[0],Scalar[1],Scalar[2],Sc ...

  7. verilog实现计算均值

    verilog实现计算均值: 在需要对大量数值求均值的场景下会用到 verilog实现计算均值代码: //先写入所有RAM所有数据,然后写计数器比读计数器慢一拍,形成加一个数同时减一个数. modul ...

  8. 数据流标准差计算方法-不用事先计算均值

    数据流标准差计算方法-不用事先计算均值 挑战 标准差(Standard Deviation)是误差有效值的估计,在信号处理里面代表偏差有效值.公式定义需要事先知道均值(引自百度百科): 数据流进来,你 ...

  9. 《数字图像处理》冈萨雷斯matlab函数statmoments、计算均值和n阶中心矩,并返回行向量

    <数字图像处理>冈萨雷斯matlab函数statmoments statmoments:计算均值和n阶中心矩,并返回行向量 ○ [v, unv] = statmoments(p,n) ○ ...

最新文章

  1. Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...
  2. R配对卡方检验(McNemar‘s Test)
  3. 《当程序员的那些狗日日子》(三十五)欲去还留
  4. ROS知识[14]:安装ubuntu 18.04和eclipse+CDT(installer)
  5. 花之吻自己查错误订单的一个小脚本
  6. Tensorflow Day19 Denoising Autoencoder
  7. 2017蓝桥杯c语言C组承压计算,蓝桥杯2017Java B组---分巧克力and承压计算
  8. 连接查询_左连接/右连接/全连接的区别
  9. 我一直在想500年前我是不是孙悟空,但是事实上我却是至尊宝。这就是宿命(capsicum.heorhome.net)
  10. 2020 年微服务领域开源数字化报告发布,阿里扛起微服务大旗
  11. real-time RGB-D camera relocalization
  12. linux下环境变量设置的问题
  13. SqlServer语句重命名数据库名称
  14. Android 移动应用开发模拟题
  15. linux下编译jrtplib和jthread,Linux下编译jrtplib和jthread(转)
  16. 如何完全彻底的卸载Oracle
  17. python图片对比模块_使用Python的PIL模块来进行图片对比
  18. php的persion是,php创建Persion类,反射过程,反射后使用流程详解
  19. 二级渠道分销系统开发适合什么样的产品?
  20. 俄罗斯DST收购ICQ;苹果收购芯片提供商(每日关注20100428)

热门文章

  1. 3.3 利用群晖:群辉与PC电脑直连,实现万兆/2.5G速度文件互传(解决 直连后 网络/外网/网页 访问变慢,直连后群辉无网络 cloud sync无网络)
  2. 计算机与计算思维读后感论文,计算机与计算思维读后感.docx
  3. 新闻稿软文字数多少字最为合适?
  4. 苹果iWatch电池曝光 将搭载健康传感器
  5. 我国当前大数据的发展现状——阿里巴巴、百度和腾讯为例
  6. 安卓Wifi设置DHCP以及静态IP
  7. 《数据库技巧》数据库两个表求笛卡尔积(阶乘)
  8. Try-catch语句的使用
  9. Flutter基础(九)资源和图片
  10. Linux基础教程(第2版)课后答案集合