Группировка компаний и их сделки - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь выяснить количество сделок между компаниями страны в SQL:

Вот мои таблицы Компания и предложения

Company
================
companyname     country
A               US
B               US
C               UK
D               Russia  


Deals
================
id  sold bought total
1   A    B      50
2   B    C      100
3   C    A      150
4   D    B      200


Result:
============
country     sold    bought
US          150     200
UK          150     100
Russia      200     0

Я пробовал следующий запрос, которыйполучает только проданные товары:

select country, sum(total) as sold 
from company c left join deals d on c.companyname=d.sold 
group by country.

Как написать запрос, чтобы получить результаты продаж и покупок за раз?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

с использованием подзапроса

select t1.country,t1.sold,t2.bought  from
(
select c.country,coalesce(sum(d.total),0) as  sold
 from company  c left join Deals d
on c.companyname=d.sold
group by c.country
) t1 left join

(
select c.country,coalesce(sum(d.total),0) as bought 
 from company  c left join Deals d
on c.companyname=d.bought 
c.country
) t2 on t1.country=t2.country
0 голосов
/ 15 октября 2018

Один метод использует подзапросы

select country, sum(sold) as sold, sum(bought) as bought
from (select c.*,
             (select sum(d.total)
              from deals d
              where d.sold = c.companyname
             ) as sold,
             (select sum(d.total
              from deals d
              where d.bought = c.companyname
             ) as bought
      from company c
     ) c
group by country;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...