有关创建 SQL 查询以获取分区上的排名总和的问题

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

我有下表

 PRODUCT    LOCATION   WHS  RANK  SALES   reason
 -------------------------------------------------
 FUNZ       ATL        11    1     100    out 
 FUNZ       ATL        11    2      90    broken
 FUNZ       ATL        11    3      80    mal
 FUNZ       FL         12    4      70    unavailable 

我根据销售额对行进行排名。

我知道所有行的总销售额为 340。但我想要类似下面的排名最高但具有销售总额的行。

例如

   Product   Location   WHS  RANK  SALE reason
   -------------------------------------------
   FUNZ      ATL        11   1     340   out

我怎么能做出这样的事?

不知道该尝试什么。我通过做得到了排名

RANK() OVER (PARTITION BY product, location ORDER BY SUM(sales) ASC) AS SRank
sql
1个回答
0
投票

您可以在派生表或表表达式中使用 window 函数,例如:

with cte as (
  select <columns>, 
    sum(SALES) over(partition by product) as TotSales 
  from <yourtable>
) 
select * 
from cte 
where rank = 1;
© www.soinside.com 2019 - 2024. All rights reserved.