首页 > 解决方案 > 分组并求和,然后根据 SQL 中的最大值计算结果

问题描述

我正在尝试按供应商和 ID 分组,并从下表中获取总重量的总和。之后,对于每个“供应商”,我需要获得最大的“权重”并获得相应的“ID”。

Vendor Id  Weight
 AAA   1   1234
 AAA   1   121
 AAA   2   5182
 BBB   1   311 
 BBB   1   9132
 BBB   2   108

第一个查询给出以下结果:

[ { Vendor: 'AAA', Id: '1', Total_Weight: 1355 },
  { Vendor: 'AAA', Id: '2', Total_Weight: 5182 },
  { Vendor: 'BBB', Id: '1', Total_Weight: 9443 },
  { Vendor: 'BBB', Id: '2', Total_Weight: 108 }, ]

第二个查询结果如下,对于Vendor 'AAA',最大Total_Weight为“5182”,属于“Id”=2。同样对于'BBB',最大Total_Weight为“9443”,属于“Id” " = 1。

[ { Vendor: 'AAA', Id: '2'},
  { Vendor: 'BBB', Id: '1'} ]

对于第一部分,我的查询如下

select Vendor, Id, sum(Weight) as Total_Weight from table group by Vendor, Id. 

不确定如何修改此查询以获得结果的第二部分。任何建议,将不胜感激。

标签: sql

解决方案


以下查询将解决您的问题:

SELECT Vendor, Id from
    (select Vendor, Id, max(Total_Weight) from 
        (select Vendor, Id, sum(Weight) as Total_Weight from table group by Vendor, Id) 
    group by Vendor
    )

内部嵌套查询产生总和,然后找到总权重的最大值。然后外部选择为您提供所需的输出。


推荐阅读