2015-07-25 3 views
1
Table WIDGET 
    Columns Country, Contract, Price 

Table WEIGHT 
    Columns Contract, Weight 

Я пытаюсь сделать SUMRPRODUCT(Contract, Weight)/SUM(Weight), но и для всех значений Country. То, что я пытался заимствован из Weighted average in T-SQL (like Excel's SUMPRODUCT) и выглядит какSQL SUMPRODUCT с твист

SELECT 
    Country 
    SUM(widget.price * weight.weight)/SUM(weight.weight) 
FROM 
    Widget 
     INNER JOIN 
    Weight ON Widget.contract = Weight.contract 
WHERE 
    Weight.contract >= '2016-01-01' 
    AND Weight.contract <= '2016-12-01' 

Проблема с этим состоит в том, что он вычисляет его для одного значения Country, но не для всех из них. Как я могу получить список DISTINCT(Country) и SUMPRODUCT()/SUM() для отфильтрованных контрактов рядом с ним?

Примеры данных

+-----------+---------+------------+-------+ 
| widget_id | country | contract | price | 
+-----------+---------+------------+-------+ 
|   4 | CA  | 2016-01-01 | 16.00 | 
|   5 | CA  | 2016-02-01 | 32.00 | 
|   6 | CA  | 2016-03-01 | 64.00 | 
|   1 | US  | 2016-01-01 | 32.00 | 
|   2 | US  | 2016-02-01 | 64.00 | 
|   3 | US  | 2016-03-01 | 96.00 | 
+-----------+---------+------------+-------+ 

+-----------+------------+--------+ 
| weight_id | contract | weight | 
+-----------+------------+--------+ 
|   1 | 2016-01-01 |  1 | 
|   2 | 2016-02-01 |  8 | 
|   3 | 2016-03-01 |  64 | 
+-----------+------------+--------+ 

Желаемая выход

+---------+-----------+ 
| Country | Wtd Price | 
+---------+-----------+ 
| CA  | 59.835616 | 
| US  | 91.616438 | 
+---------+-----------+ 
+0

Пожалуйста редактировать Ваши вопросы и предоставить образец данных и желаемых результатов. –

ответ

2

Вы просто должны группировать по стране, как этот

SELECT 
    Country 
    SUM(widget.price * weight.weight)/SUM(weight.weight) 
FROM 
    Widget 
     INNER JOIN 
    Weight ON Widget.contract = Weight.contract 
WHERE 
    Weight.contract >= '2016-01-01' 
    AND Weight.contract <= '2016-12-01' 
GROUP BY Country 
+0

Да. Вот и все. Спасибо. – Vishal

Смежные вопросы