Комбинированные запросы - PullRequest
0 голосов
/ 03 июля 2018

Очень плохо знаком с MYSQL, но как я могу объединить эти два запроса, чтобы показать SUM (всего) типа = 'i' минус SUM (всего) типа = 'p'.

SELECT userid, SUM(total)
FROM invoices
WHERE type = 'i'
GROUP BY 1

SELECT userid, SUM(total)
FROM invoices
WHERE type = 'p'
GROUP BY 1

1 Ответ

0 голосов
/ 03 июля 2018

Вы можете использовать case выражение

SELECT userid, 
    SUM(case when type = 'i' then total else 0 end) typei,
    SUM(case when type = 'p' then total else 0 end) typep,
    SUM(case when type = 'i' then total else 0 end) - SUM(case when type = 'p' then total else 0 end) as diff
FROM invoices
GROUP BY userid

Или вы могли бы написать это как

SUM(case when type = 'i' then total when type = 'p' then -1 * total else 0 end) as diff

Редактировать: чтобы отфильтровать результаты, полученные агрегацией, вы можете использовать пункт

SELECT userid, 
    SUM(case when type = 'i' then total else 0 end) typei,
    SUM(case when type = 'p' then total else 0 end) typep,
    SUM(case when type = 'i' then total else 0 end) - SUM(case when type = 'p' then total else 0 end) as diff
FROM invoices
GROUP BY userid
HAVING diff > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...