Hive分析函数之ntile、排名函数学习
1、Ntile使用
可以看成是:它把有序的数据集合平均分配到指定的数量(num)个桶中, 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。
语法是:ntile (num) over ([partition_clause] order_by_clause) as your_bucket_num
然后可以根据桶号,选取前或后 n分之几的数据。
数据会完整展示出来,只是给相应的数据打标签;具体要取几分之几的数据,需要再嵌套一层根据标签取出。
1.1、总体分片
select uid,sum(amount) pay_amount,ntile(100)over(order by sum(amount) desc) til
from data_chushou_pay_info
where pt_day between '2017-01-01' and '2017-11-14' and state=0
group by uid;select pt_month,sum(amount) pay_amount,ntile(3)over(order by sum(amount) desc) til
from data_chushou_pay_info
where pt_month between '2017-01' and '2017-11' and state=0
group by pt_month;
1.2、分组内分片
select pt_month,pt_day,sum(amount) pay_amount,ntile(3)over(partition by pt_month order by sum(amount) desc) til
from data_chushou_pay_info
where pt_month between '2017-09' and '2017-11' and state=0
group by pt_month,pt_day;
2、排名函数
ROW_NUMBER()
–从1开始,按照顺序,生成分组内记录的序列
RANK 和 DENSE_RANK
—RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位
—DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位
2.1、分组3种排名
select pt_month,uid,sum(amount) pay_amount,
ROW_NUMBER()over(partition by pt_month order by sum(amount) desc) rk1,
RANK()over(partition by pt_month order by sum(amount) desc) rk2,
DENSE_RANK()over(partition by pt_month order by sum(amount) desc) rk3
from data_chushou_pay_info
where pt_day between '2017-01-01' and '2017-11-14' and state=0
group by pt_month,uid;
2.2、总体3种排名
select pt_month,uid,sum(amount) pay_amount,
ROW_NUMBER()over(order by sum(amount) desc) rk1,
RANK()over(order by sum(amount) desc) rk2,
DENSE_RANK()over(order by sum(amount) desc) rk3
from data_chushou_pay_info
where pt_day between '2017-01-01' and '2017-11-14' and state=0
group by pt_month,uid;
Hive分析函数之ntile、排名函数学习相关推荐
- 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. 表结构和初始数据Sql 附上表结构和初始数据图: ...
- Presto 文档学习之 窗口函数(Window Functions)排名函数(Ranking Functions)
Hello!大家好,本人菜鸟一枚,最近在领导的要求下学习Prestodb,没办法只能打开官方文档来自我学习,对于英语渣的我来说无疑是痛苦的,看到的页面和天书一样 谷歌翻译过来的吧 很多句子看不懂想要具 ...
- 基于hive的SQL排名函数详解
前言 在hive的学习中接触到了三种很实用的排名函数,这些函数在Mysql8.0版本中也已存在, 分别是:Rank(),Dense_rank(),Row_number(), 虽然都是排名函数,但三者间 ...
- SQL2005 四个排名函数(row_number、rank、dense_rank和ntile)的比较
排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数row_number.rank.dense_rank和ntile,需要的朋友可以参考下. 排名函数是 ...
- SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介 排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Ord ...
- HiveQL学习笔记(二):Hive基础语法与常用函数
本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...
- java中rank函数_SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别. 在使用排名函数的时候需要注意以下三点: 1.排名函数必须有 OVER 子句. 2.排名函数必须有包含 ORDE ...
- mysql rank函数_Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. 表结构和初始数据Sql 附上表结构和初始数据图: ...
- sql 四大排名函数---(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
1.ROW_NUMBER() 定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询, 比如查询前10个 ...
最新文章
- php 多人游戏_「谁会是下一个王者农药」云服务器如何搭建游戏服务器?
- Python-使用python-memcache操作Memcached
- 【计算理论】计算复杂性 ( 算法复杂度标记 | 渐进上界 | 大 O 记号 | 常用的渐进上界 )
- SpringMVC 中静态资源的处理
- 子网划分以及子网掩码
- Python3——JSON
- 关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
- Asp.Net 构架(HttpModule 介绍) - Part.3
- hibernate5(8)操纵对象入门[3]操控对象封装方法
- python numpy diff_Python numpy.uint16方法代码示例
- matlab编写erf函数
- 内存超频时序怎么调_一个傻瓜式内存超频教程
- 文件名太长无法删除怎么办?
- Maya N动力学管理工具 v1.2.2 下载及教程
- 智能家居更智能,小程序的生态合作新方案
- excel数据库_标签打印软件中Excel数据整理及导入
- Educoder头歌单总线CPU设计(定长指令周期3级时序)(HUST)谭志虎 华中科技大学计算机组成原理实验计算机硬件系统设计
- 工业虚拟仿真软件系统解决方案
- First-chance exception at 0x774CEB23 (ntdll.dll) in XXX.exe: 0xC0000005: Access violation writing
- 启动Oracle服务报错:本地计算机上的OracleOraDb10g_homeTNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。