如何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()
。
我查了一下历史,类似的问题也有一些答案,但是好像太复杂了。
我有 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()
。