簡體   English   中英

Impala SQL 返回前 3 條分組記錄

[英]Impala SQL return top 3 grouped records

我在 impala 上有這個表格示例。我想為每個調用者獲得最大的最高number_of_call

caller 和 group_id 是唯一的組合在一起

caller | group_id |number_of_call
  23   | 4433     | 12
  45   |  342     | 5
  23   |  475     | 33
  45   |  732     | 9
  46   |  4433    | 2
  23   |  522     | 5
  45   |  475     | 54
  23   |  342     | 32
  45   |  342     | 43

預期輸出

  caller   | group_id | number_of_call
     23    |   475    | 33
     23    |   342    | 32
     23    |   4433   | 12
     46    |   4433   | 2
     45    |   475    | 54
     45    |   342    | 43
     45    |   732    | 9

您可以使用窗口函數來解決這個最大的每組 n 個問題:

select *
from 
    select t.*, row_number() over(partition by caller order by number_of_calls desc) rn
    from mytable t
) t
where rn <= 3
order by caller, rn

在子查詢中, row_number()通過降序number_of_calls具有相同caller的記錄進行排名。 然后,外部查詢過濾每個caller的前 3 條記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM