Hive分組后取組內排名方法row_number


 

今天遇到這樣一個需求場景,要取出 每一種分類(a,b組合分類) 符合條件的日期(字段c) 距離現在最近的10個日期 的數據

首先想到的是用sql篩選出符合某種條件的所有數據,這樣的事情很簡單

然后用腳本(python)遍歷每一種組合(a,b),然后按日期c倒序排序 取前10

 

如果拿到這個數據后 還要去hive連表查詢其他數據,那么上面的方法就比較麻煩,可能需要再取多次hive

 

我們有沒有sql的方法直接完成這樣的事情呢?有的 我們可以用到row_number:

with
t_rank as (
        select 
            a,
            b,
            c, 
            Row_Number() OVER (partition by a,b ORDER BY c desc) rank 
        from t_test
    )

select a,b,c from t_rank where rank <= 10

 

下面就繼續嵌套添加其他的sql邏輯吧  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM