SQL - сумма значений в столбце по значению другого столбца без группировки - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть набор данных, который выглядит следующим образом:

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 голосов
/ 22 апреля 2020

Без группировки вы можете сделать это, если ваша 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
0 голосов
/ 22 апреля 2020

Вы можете использовать скалярный подзапрос, чтобы получить эту сумму.

Например:

select *,
  (select sum(Amount) from my_table a 
   where a.Location = t.Location and a.Name = t.Name) as Total
from my_table t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...