2016-09-06 3 views
0

У меня есть ниже 2 MYSQL еженедельных таблиц:Объединение SUM из 2 таблиц

TableA_Wk1

Id | Price 
---------- 
1 | 1 
1 | 2 
2 | 5 

TableA_Wk2

Id | Price 
---------- 
1 | 2 
4 | 2 

я могу группировать цена в одной таблице:

SELECT Id, SUM(Price) FROM TableA_Wk1 
GROUP BY Id 

и получите

Id | Price 
---------- 
1 | 3 
2 | 5 

Я хотел бы также рассмотреть таблицу TableA_Wk2, чтобы получить ниже:

Id | Price 
---------- 
1 | 5 
2 | 5 
4 | 2 

Если я использовать UNION ALL результат отделено:

SELECT Id, SUM(Price) FROM TableA_Wk1 
    GROUP BY Id 
UNION ALL 
SELECT Id, SUM(Price) FROM TableA_Wk2 
    GROUP BY Id 

ответ

1

Сначала получите все кортежи <Id,price> из этих двух таблиц. Затем используйте SUM и GROUP BY Id на итоговой таблице.

SELECT 
t.Id, 
SUM(t.price) 
FROM 
(
SELECT Id, Price FROM TableA_Wk1 
UNION ALL 
SELECT Id, Price FROM TableA_Wk2 
) AS t 
GROUP BY t.Id 

Примечание

UNION удаляет дубликаты.

UNION ALL нет.

1

Союз результирующего набора и затем выполните суммирование, чтобы получить суммарное значение.

select sum(price) from (
    select price from TableA_Wk1 
    union all 
    select price from TableA_Wk1 
) as alais 
1

Первый UNION, затем GROUP BY:

SELECT t.id,sum(t.price) as price 
FROM (
     SELECT id,price from TableA_Wk1 
     UNION ALL 
     SELECT id,price from TableA_Wk2 
    ) t 
GROUP BY t.id 
Смежные вопросы