首页 > 数据库 > 数据库开发技术 > hive开窗函数-row_number
一、row_number 的语法
row_number 函数的语法如下所示:
ROW_NUMBER() OVER ([PARTITION BY partition_expression, ... [n]]ORDER BY sort_expression [ASC|DESC], ... [m])
二、row_number 的样例
SELECT user_id, city, registered_at,ROW_NUMBER() OVER (PARTITION BY city ORDER BY registered_at) as row_numFROM users;
user_id | city | registered_at | row_num以上结果展示了来自不同城市的用户按照注册时间排序后的排名信息。
------- | --------| -------------------- | -------
1 | Beijing | 2022-01-01 10:00:00 | 1
2 | Beijing | 2022-01-02 12:00:00 | 2
3 | Shanghai | 2022-01-02 15:00:00 | 1
4 | Shanghai | 2022-01-03 08:00:00 | 2
5 | Shanghai | 2022-01-04 09:00:00 | 3
6 | Guangzhou| 2022-01-05 10:00:00 | 1
7 | Guangzhou| 2022-01-06 11:00:00 | 2
三、row_number 的常用应用场景
row_number 函数在 Hive 查询中广泛应用,特别是在需要获取排名信息的场景中。下面是一些常用的应用场景:
获取 TOP N 数据:可以使用 row_number 函数对数据进行排序并筛选出前 N 条数据;
获取分组内 TOP N 数据:可以使用 PARTITION BY 子句对数据进行分区,然后再使用 row_number 函数对每个分区内的数据进行排序,最后再筛选出前 N 条数据;
根据某些列的值进行条件筛选:可以在 WHERE 子句中使用 row_number 函数来筛选出满足一定条件的数据。
总之,row_number 函数是在 Hive 查询中非常有用的一个函数,可以让我们更加便捷地获取排名信息,并且在实际应用中具有广泛的应用场景。
四、样例数据建表语句及数据插入语句
建表语句
CREATE TABLE IF NOT EXISTS users (user_id STRING,city STRING,registered_at TIMESTAMP) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
数据插入语句
INSERT INTO users VALUES('1', 'Beijing', '2022-01-01 10:00:00'),('2', 'Beijing', '2022-01-02 12:00:00'),('3', 'Shanghai', '2022-01-02 15:00:00'),('4', 'Shanghai', '2022-01-03 08:00:00'),('5', 'Shanghai', '2022-01-04 09:00:00'),('6', 'Guangzhou', '2022-01-05 10:00:00'),('7', 'Guangzhou', '2022-01-06 11:00:00');
原文作者:数据仓库技术;如有侵权,请联系管理员删除。