почему сумма результатов в sql несовместима с результатами исходных данных? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть две таблицы

table1
id,link_kd, scost, syear

table2
id,link_kd, hcost, hyear

это моя скрипка

, когда я использую объединение для суммы и группировки по годам, результаты несовместимы, но если я делаю один запрос, результаты точны, может ли кто-нибудь помочь мне?

Я хочу суммировать скост и шкост по годам.если есть год, но нет данных scost или hcost, результаты будут равны нулю.но главная проблема в том, что мой запрос несовместим с результатами

1 Ответ

0 голосов
/ 06 декабря 2018

Предполагая, что вы хотите получать одну сумму в год, вот один из вариантов, используя union all:

SELECT year, SUM(scost) scostsum, 
FROM (
  SELECT syear as year, scost as cost from table1 
  UNION ALL
  SELECT hyear as year, hcost as cost from table2 
  ) t
GROUP by year;

На основании вашего комментария, если вам нужно несколько сумм, вы должны создатьтаблица лет, а затем используйте outer joins, чтобы получить свой скост и шкост.Вот пример:

select year, coalesce(s.cost,0) as scost, coalesce(h.cost,0) as hcost
from (select syear as year from table1 union select hyear from table2) years
    left join (
      select syear, sum(scost) cost
      from table1 
      group by syear) s on years.year = s.syear
    left join (
      select hyear, sum(hcost) cost
      from table2 
      group by hyear) h on years.year = h.hyear
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...