SQL-按另一列的值对列中的值求和而不进行分组

时间:2020-04-22 18:15:32

标签: mysql sql

我有一个看起来像这样的数据集:

Location   Name    Amount
1          Bob     5        
1          Phil    1        
1          Bob     2        
West       Phil    2        
West       Phil    3        

我想要一列,它将查看“位置”和“名称”,并对“金额”中具有相同值的所有数据求和,而不进行分组。位置和名称可能完全不同。看起来像这样:

Location   Name    Amount   Total
1          Bob     5        7
1          Phil    1        1
1          Bob     2        7
West       Phil    2        5
West       Phil    3        5

我对在这里做什么感到很迷茫。如果在Excel中使用SUMIFS,将非常容易!感谢所有帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用标量子查询来获取总和。

例如:

select *,
  (select sum(Amount) from my_table a 
   where a.Location = t.Location and a.Name = t.Name) as Total
from my_table t

答案 1 :(得分:0)

如果MySql版本支持窗口功能,则无需分组即可

select *, sum(amount) over (partition by location, name) total
from tablename

没有窗口函数,您可以使用返回总数的子查询来实现:

select t.*, (select sum(amount) from tablename where location = t.location and name = t.name)) total
from tablename t