HIVE-row

it2025-12-23  5

OVER(PARTITION BY order by)函数更详细的使用,可查看博文https://blog.csdn.net/qq_41712271/article/details/109224538 select row_number() over (partition by month order by ref_host_cnts desc)

partition:按照month分成区块

order by :排序是在partition分成的区块中分别进行。

row_number():对各个分区分别添加编号,类似于rownum的递增序列

准备表和测试数据

create external table product_1 (day_id string, mac_id int, mac_color string, day_num int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE load data local inpath '/tmp/data1.txt' overwrite into table product_1 20171011 1292 金色 1 20171011 1292 金色 14 20171011 1292 金色 2 20171011 1292 金色 11 20171011 1292 黑色 2 20171011 1292 粉金 58 20171011 1292 金色 1 20171011 2013 金色 10 20171011 2013 金色 9 20171011 2013 金色 2 20171011 2013 金色 1 20171012 1292 金色 5 20171012 1292 金色 7 20171012 1292 金色 5 20171012 1292 粉金 1 20171012 2013 粉金 1 20171012 2013 金色 6 20171013 1292 黑色 1 20171013 2013 粉金 2 20171011 12460 茶花金 1

sql查询示例如下,以day_id分组,按day_num排序,最前3个

select * from ( select day_id,mac_id,mac_color,day_num, row_number() over (partition by day_id order by day_num desc) as od from product_1 ) t where od<=3

返回的结果如下

最新回复(0)