2015-10-26 2 views
1

Предположим, что у нас есть 3 таблицы A, B и C с одинаковыми столбцами district, population.
Мне нужно найти сумму всех population s из всех таблиц в одном запросе.
Я не слишком разбираюсь в запросах и еще не создал структуру, но хотел бы знать, будет ли работать такой запрос, как показано ниже.Поиск общей суммы суммы разных столбцов разных таблиц

select Sum(SUM1+SUM2+SUM3) 
from tableA A, tableB B, tableC C 
where SUM1 = sum(A.population) 
    and SUM2 = sum(B.population) 
    and SUM3 = sum(C.population) ; 

Любые другие предложения также приветствуются.

ответ

4

Вы можете использовать union all:

select sum(t.population) 
from (
    select population from table A 
    union all 
    select population from table B 
    union all 
    select population from table A 
) t 
+1

Спасибо большое поташин :). –

3

Try:

SELECT COALESCE((SELECT SUM(population) FROM TableA),0) + 
     COALESCE((SELECT SUM(population) FROM TableB),0) + 
     COALESCE((SELECT SUM(population) FROM TableC),0) AS TotalPopulation 

Demo here

+2

один из 'sum's _may_ вернуть' null', тем самым вызывая накопленную сумму стать также 'нулевой ', для решения в общем случае вы можете использовать' coalesce' для предотвращения такого поведения. – potashin

+2

@potashin Хорошая добыча! Я отредактировал свой ответ, большое спасибо. –

+0

Большое спасибо Giorgos :). –

Смежные вопросы