如何选择与最大值对应的列(SQL-impala)

问题描述 投票:0回答:1

我检查了历史记录,对于类似问题有一些答案,但它们似乎太复杂了。

我有这样的桌子:

CUSTOMER_ID    SELLER_ID     MONTH     ITEMS_SOLD
1                A          201702      3
1                B          201702      2
2                X          201902      7
2                Y          201902      8

我想列出仅对应于已售出最大商品的列(客户,销售商和月份)。理想的结果是:

CUSTOMER_ID    SELLER_ID     MONTH     
1                A          201702      
2                Y          201902      
sql impala
1个回答
0
投票

使用窗口功能:

select t.*  -- list whichever columns you really want
from (select t.*,
             row_number() over (partition by customer_id order by items_sold desc) as seqnum
      from t
     ) t
where seqnum = 1;

注意:如果一个客户的多个月的最大值相同,则可以任意选择其中之一。如果要全部使用,请使用rank()代替row_number()

© www.soinside.com 2019 - 2024. All rights reserved.