为配置单元中的每个分区查找前n行

2wnc66cl  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(279)

我试过类似的方法

select * from table_name
group by column1
Order by column2 desc;

但它不起作用,因为您应该将所有选定的列放在GROUPBY语句中。
有什么类似的吗

for each partition

* do something*

在 hive 里?谢谢。
编辑:column1是在其上进行分区的列

9avjhtql

9avjhtql1#

我们通常使用 ROW_NUMBER() 对于这种情况。

SELECT a.col1
    ,a.col2
    ,a.col3  --Other columns
FROM (
    SELECT t.*
        ,ROW_NUMBER() OVER ( PARTITION BY column1
    ORDER BY column2 DESC
    ) AS rn
FROM table_name t ) a
WHERE rn >= n -- filter based on rn to get top n rows for each partition.

相关问题