今天遇到這樣一個需求場景,要取出 每一種分類(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邏輯吧
