![](/img/trans.png)
[英]SQL query to return n top records which have a null field or records grouped by that field
[英]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.