Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Разность сумм из двух разных таблиц sql запрос. PostgresSql

Victoria Ell Ученик (211), закрыт 4 года назад
У меня есть таблица
покупки, где указано id товара (от 1 до 3) и количество проданного товара
И таблица закупки где есть те-же самые поля
Мне необходимо посчитать разницу сумм "количество" из двух таблиц
Дополнен 4 года назад
Пробую так, считает неправильно
select
case
when ( purchase.id_goods = 1 and purchase.id_goods= 1 ) then ( SUM (purchase.quantity) - SUM (sells.id_goods) ) end
from purchase, sells
group by purchase.id_goods, purchase.id_goods;
Дополнен 4 года назад
вот этот запрос

select purchase.id_goods, sells.id_goods,
case
when ( purchase.id_goods = 1 and sells.id_goods= 1 ) then ( SUM (purchase.quantity) - SUM (sells.id_goods) ) end
from purchase, sells
group by purchase.id_goods, sells.id_goods;
Лучший ответ
Илья Ш Просветленный (20236) 4 года назад
select id_goods, PQ - SQ
(select purchase.id_goods, SUM (purchase.quantity) as PQ
from purchase
group by purchase.id_goods) as P
JOIN
(select sells.id_goods, SUM (sells.quantity) as SQ
from sells
group by sells.id_goods ) as S

ON S.id_goods= P.id_goods
Victoria EllУченик (211) 4 года назад
Можно узнать, что такое pq и sq
Илья Ш Просветленный (20236) SUM (purchase.quantity) SUM (sells.quantity)
Виктор МальковМудрец (10308) 4 года назад
select coalesce(p.id_goods, s.id_goods) as id_goods, coalesce(pq, 0) - coalesce(sq, 0) as remain from
(
(select id_goods, sum(quantity) as pq from purchase group by id_goods) as p
full join
(select id_goods, sum(quantity) as sq from sells group by id_goods) as s
on p.id_goods = s.id_goods
);
full join лучше не использовать. Медленно работает. Можно сделать так: select id, sum(val) from ( select id, val from … union all select id, -val from … ) group by id Проще и быстрее работает.
Остальные ответы
Похожие вопросы