一、cume_dist

这两个序列分析函数不是很常用,这里也介绍一下。
注意: 序列函数不支持WINDOW子句。

数据准备:

d1,user1,1000
d1,user2,2000
d1,user3,3000
d2,user4,4000
d2,user5,5000

创建表并加载数据

create external table user(
dept string,
userid string,
sal int
)
row format delimited
fields terminated by ','
stored as textfile
location '/testuser';

验证数据:

hive (default)> select * from user;
OK
user.dept user.userid user.sal
d1 user1 1000
d1 user2 2000
d1 user3 3000
d2 user4 4000
d2 user5 5000
Time taken: 0.341 seconds, Fetched: 5 row(s)

CUME_DIST
–CUME_DIST 小于等于当前值的行数/分组内总行数
–比如,统计小于等于当前薪水的人数,所占总人数的比例

select dept,userid,sal,
cume_dist() over(order by sal) as rn1,
cume_dist() over(partition by dept order by sal) as rn2
from user; OK
dept userid sal rn1 rn2
d1 user1 1000 0.2 0.3333333333333333
d1 user2 2000 0.4 0.6666666666666666
d1 user3 3000 0.6 1.0
d2 user4 4000 0.8 0.5
d2 user5 5000 1.0 1.0
Time taken: 3.931 seconds, Fetched: 5 row(s)

rn1: 没有partition,所有数据均为1组,总行数为5,
第一行:小于等于1000的行数为1,因此,1/5=0.2
第三行:小于等于3000的行数为3,因此,3/5=0.6
rn2: 按照部门分组,dpet=d1的行数为3,
第二行:小于等于2000的行数为2,因此,2/3=0.6666666666666666

二、percent_rank

–PERCENT_RANK 分组内当前行的RANK值-1/分组内总行数-1
应用场景不了解,可能在一些特殊算法的实现中可以用到吧。–PERCENT_RANK 分组内当前行的RANK值-1/分组内总行数-1
应用场景不了解,可能在一些特殊算法的实现中可以用到吧。

SELECT
dept,
userid,
sal,
PERCENT_RANK() OVER(ORDER BY sal) AS rn1, --分组内
RANK() OVER(ORDER BY sal) AS rn11, --分组内RANK值
SUM(1) OVER(PARTITION BY NULL) AS rn12, --分组内总行数
PERCENT_RANK() OVER(PARTITION BY dept ORDER BY sal) AS rn2
FROM user; dept userid sal rn1 rn11 rn12 rn2
d1 user1 1000 0.0 1 5 0.0
d1 user2 2000 0.25 2 5 0.5
d1 user3 3000 0.5 3 5 1.0
d2 user4 4000 0.75 4 5 0.0
d2 user5 5000 1.0 5 5 1.0

rn1: rn1 = (rn11-1) / (rn12-1)
第一行,(1-1)/(5-1)=0/4=0
第二行,(2-1)/(5-1)=1/4=0.25
第四行,(4-1)/(5-1)=3/4=0.75
rn2: 按照dept分组,
dept=d1的总行数为3
第一行,(1-1)/(3-1)=0
第三行,(3-1)/(3-1)=1

最新文章

  1. 使用rsync同步目录
  2. 【转】MySQL批量SQL插入各种性能优化
  3. android studio ndk配置和ndk开发
  4. windows10的激活及SQL Server 2008 的安装
  5. 第七课第一节,T语言流程语句( 版本5.0)
  6. BZOJ4034 T2
  7. 使用163CentOS镜像
  8. OC—设计模式-通知的使用
  9. Ajax中解析Json的两种方法详解
  10. iOS:ABPeoplePickerNavigationController系统通讯录使用
  11. 【Web探索之旅】第二部分第五课:响应式网站和移动应用
  12. JS之For---in 语句
  13. JS的DOM操作及动画
  14. Linux之磁盘与文件系统管理
  15. FFmpeg源代码简单分析:makefile
  16. Android简易实战教程--第十七话《自定义彩色环形进度条》
  17. SSM框架整合环境构建——基于Spring4和Mybatis3
  18. Bootstrap-datepicker3官方文档中文翻译---Event/事件(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
  19. 公设基础equals
  20. <5>Python的uwsgi web服务器

热门文章

  1. Linux分析第六周——进程的描述和进程的创建
  2. Codeforces 932.F Escape Through Leaf
  3. Hdu3022 Sum of Digits
  4. Chiaki Sequence Revisited HDU - 6304 lowbit找规律法
  5. C++模式设计-多线程下的单例模式
  6. 3 ways to download files with PowerShell
  7. linux shell学习三
  8. Linux下UDP一发一收通信
  9. 修改Tomcat端口
  10. eclipse插件大全(官方)