数据集如下:

cookie1,2015-04-10,1
cookie1,2015-04-11,5
cookie1,2015-04-12,7
cookie1,2015-04-13,3
cookie1,2015-04-14,2
cookie1,2015-04-15,4
cookie1,2015-04-16,4
cookie2,2015-04-10,2
cookie2,2015-04-11,3
cookie2,2015-04-12,5
cookie2,2015-04-13,6
cookie2,2015-04-14,3
cookie2,2015-04-15,9
cookie2,2015-04-16,7

1、ntile

用法:
ntitle 函数主要是用于将整表数据进行切片分组,默认是对表在不做任何操作之前进行切片分组的,比如现在整个表有9行数据,你要切片分成3组ntile(3),那么就是第1-3行为一组,4-6行为一组,7-9行分为一组。

说明:
NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值
NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)
如果切片不均匀,默认增加第一个切片的分布

selectcookieid,createtime,pv,ntile(2) over (partition by cookieid order by createtime) as rn1, --分组内将数据分成2片ntile(3) over (partition by cookieid order by createtime) as rn2, --分组内将数据分成2片ntile(4) over (order by createtime) as rn3 --将所有数据分成4片
from cookie.cookie2
order by cookieid,createtime;

查询结果如下:

问题:统计一个cookid,PV最多的前1/3天。
思路:对每个cookid的pv 降序排,然后进行切片分组ntile(3)。

select
cookieid,
createtime,
pv,
ntile(3) over(partition by cookid order by pv desc) as rn
from cook.cookie2;

取rn = 1的记录。

2、row_Number()
用法 :
从1开始,按照顺序生成该条数据在分组内的对应的序列数,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列。
在使用的时候,后面会跟着一个函数over(),over() 的作用是将表中的记录进行分组和排序,因为row_number()是按照顺序生成对应的序列,而不是按照排序生成序列,所以row_number()一般需要与order by 进行结合使用。

问题:取各组内的第一名?

select
cookieid,
createtime,
pv,
row_number() over(partition by cookieid order by pv desc)  as rn
from cookie.cookie2

取各组内的 rn = 1即可。

3、RANK 和DENSE_RANK

rank()生成数据项在分组中的排名,排名相等会在名词中留下空位。

dense_Rank()生成数据项在分组中的排名,排名相等在名次中不会留下空位。

selectcookieid,createtime,pv,rank() over (partition by cookieid order by pv desc) as rn1,dense_rank() over (partition by cookieid order by pv desc) as rn2,row_number() over (partition by cookieid order by pv desc) as rn3
from cookie.cookie2
where cookieid='cookie1';

查询结果:

总结:
row_bumber 、Rank和Dense_Rank的区别
row_number:按照顺序编号,相同的值编号不同,不留空名次;
rank:按顺序编号,相同的值编号相同,留空位;
dense_Rank:按照顺序编号,相同的值编号相同,不留空名次;

Hive- 序列函数相关推荐

  1. HIVE 常用函数总结

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

  2. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  3. Hive常用函数大全一览

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

  4. hive - 自定义函数(超详细步骤,手把手的交)

    用Java开发自定义函数,步骤: 1.eclipse上新建一个工程project(db2019): 2.导jar依赖包: db2019右键 --build path --configure... -- ...

  5. hive 开窗函数_Hive的架构剖析

    本文主要介绍Hive的架构和以及HQL的查询阶段,主要内容包括: Hive的架构 架构中的相关组件介绍 HQL的查询阶段 Hive的架构 hive的基本架构图如下图所示: 相关组件介绍 数据存储 Hi ...

  6. hive UDF函数取最新分区

    hive UDF函数取最新分区 1.pom文件 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.hi ...

  7. Hadoop3集群搭建之——hive添加自定义函数UDTF (一行输入,多行输出)

    上篇: Hadoop3集群搭建之--虚拟机安装 Hadoop3集群搭建之--安装hadoop,配置环境 Hadoop3集群搭建之--配置ntp服务 Hadoop3集群搭建之--hive安装 Hadoo ...

  8. Hive自定义函数入门实例

    概念 UDF函数一共分为三种类型: ​ UDF-一进一出,给定一个参数,输出一个处理后的数据 ​UDAF-多进一出,属于聚合函数,类似于count.sum等函数 ​UDTF-一进多出,属于一个参数,返 ...

  9. Hive自定义函数(字母大小写转换)

    自定义Hive的函数,首先需要继承UDF类,然后定义方法名字为evaluate的方法,该方法不能设置void,如果需要返回为空,可以返回为null. 一个简单的大小写转换案例 特别注意看注释 pack ...

  10. 基本数据结构--字典和常用内置序列函数

    字典 #字典 #创建一个字典,存储一个人的信息 dict1={'name':'zhangsan','age':30,'city':'beijing'} print(dict1) {'name': 'z ...

最新文章

  1. 数学中的span以及线性流形是什么意思
  2. VS2015 error MSB6006: “cmd.exe”已退出 代码为 3
  3. 4.2.2 磁盘调度算法
  4. socket缓冲区以及阻塞模式详解
  5. linux多点触控软件测试,测试工程师日常工作中高频Linux命令
  6. Apache网站服务
  7. linux php 5.3 变慢,异常在 PHP 5.3 中的最佳实践
  8. java接口回调学习
  9. python中英文切换_vue根据按钮进行中英文切换
  10. 解决 Mac OS 下罗技鼠标滚轮无法使用问题(滚动失效)
  11. Reactor5.0源代码混淆器
  12. Shell 使用 expr 进行数学运算
  13. FDE之要求密码开机流程
  14. 经验分享!java程序员面试十多家公司后的经验心得
  15. fsleyes -- 一款多功能影像数据查看器
  16. Spark 1:Spark基础入门
  17. JPG图片怎么压缩到30k内?如何压缩图片到指定大小?
  18. 搜一下导航完整程序源码+亲测可用
  19. STM32 中的 GPIO_Pin_n与GPIO_Pinsource_n
  20. 【智能工厂】—走进MES项目

热门文章

  1. vue项目debugger调试看不到源码
  2. 在js里面获取当前时间的前六个月
  3. 苹果手机文件连接服务器显示离线,查找iphone一直显示30分钟前的旧位置,是代表设备短暂接入后又离线了吗?...
  4. 三步教你开通微信小程序直播功能
  5. java画折线图和柱状图结合的综合图(用jfreechart)
  6. C#学习 - 关于懒汉式和饿汉式单例
  7. itextpdf中文乱码问题研究
  8. (15.1.5)无聊的时候我们就去翻妹子们的微博
  9. 169751-73-9,Tos-PEG5-CH2CO2tBu化学式:C21H34O9S
  10. Java、使用循环语句打印4个图案