如何select对应最大值的列(SQL - impala)

How to select a column corresponding to max value (SQL - impala)

我查了一下历史,类似的问题也有一些答案,但是好像太复杂了。

我有 table 这样的:

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      

使用window函数:

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()