Hive中row_number()窗口函数为每行分配唯一连续整数,通过PARTITIONBY分组,组内按ORDERBY排序后从1开始编号,不同分区行号可重复,需在支持窗口函数的SQL引擎中使用。
Hive row_number()使用指南
作者:技术拾光
时间:2026-06-29
浏览:612
在Hive里,row_number()这个窗口函数的作用非常直观——它会为结果集里的每一行分配一个唯一的连续整数,就像给每个人发一个号码牌。下面这个例子应该能让你马上明白它的使用方式:

SELECT column1, column2, ..., row_number() OVER (PARTITION BY column1, column2 ORDER BY column3 DESC) as row_numFROM table_name;
简单拆解一下:这里先按column1和column2把数据分成多个小组(分区),然后在每个小组里按column3降序排列,最后给每一行一个从1开始的编号。结果集中返回的row_num列就是那个唯一的行号。
关于这个函数,有几个关键点值得说明:
首先是PARTITION BY子句。它用来划分子集,你可以指定一个或多个列作为分区的依据。每个分区内的行会重新开始编号,这就意味着不同分区里的行号可能重复——比如部门A的1号员工和部门B的1号员工,行号都是1,但没有任何冲突。
其次是ORDER BY子句。它决定了在每个分区内,行号是按什么顺序分配的。默认是升序,如果想让某列值大的排前面,就加个DESC。排序的列也可以写多个,跟普通的ORDER BY语法完全一样。
最后要强调的是,row_number()是一个窗口函数,所以它只能在支持窗口函数的SQL引擎里用,比如Hive、Spark SQL、PostgreSQL等。如果你用的数据库不支持窗口函数,那这个写法可就行不通了。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章