SQL: обнаружение различий в суммах между двумя таблицами? - PullRequest
0 голосов
/ 23 февраля 2011

Это кажется достаточно простым: у меня есть два голоса, и я хочу посмотреть, в каких штатах число голосов различно.По отдельности это очень просто:

select state, sum(votes) from votes_a group by state;

select state, sum(votes) from votes_b group by state;

Как мне запросить что-то вроде state, votes_a, votes_b для состояний, которые имеют разные результаты?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Попробуйте объединение:

SELECT
    totals_a.state,
    totals_a.total_votes,
    totals_b.total_votes
FROM
(
    SELECT state, SUM(votes) AS total_votes
    FROM votes_a
    GROUP BY state
) AS totals_a
JOIN
(
    SELECT state, SUM(votes) AS total_votes
    FROM votes_b
    GROUP BY state
) AS totals_b
ON totals_a.state = totals_b.state
WHERE totals_a.total_votes <> totals_b.total_votes

Обратите внимание, что в этом случае будут пропущены состояния, получившие ноль голосов в одной из таблиц.Чтобы исправить это, вы можете использовать FULL OUTER JOIN (при условии, что ваша база данных поддерживает эту функцию) и проверить на NULL.

0 голосов
/ 24 февраля 2011

Попробуйте это ...

select state, sum(votes_a), sum(votes_b)
from (select state, sum(votes) votes_a, 0 votes_b
      from votes_a 
      group by state) tbl_a
     (select state, 0 votes_a, sum(votes) votes_b
      from votes_b
      group by state ) tbl_b
where tbl_a.state = tbl_b.state
group by state
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...