2016-09-03 6 views
0

を前の週の列の追加SQLiteの私は私がやりたいどのような次のようなデータ現在の週に

Week Country  Quantity  Price 
    1  Sweden   2   $10 
    1  Germany   3   $20 
    2  Sweden   10   $20 

を持っているが、このようなものです:私は国をしていた場合

Country Quantity Price Current Week Revenue Past Week Revenue 
Sweden 30  100   300  3000 2000 

、数量、価格、今週私は使用するだろう

SELECT Country, sum(uantity), sum(price), sum(price*quantity) as   
    revenue 
    from dataset where Week = 1 Group by Country. 

しかし、私は前の週を追加する方法を失っています。 atementはデータを一週間に限定していますか?

ありがとうございます!

答えて

0

条件付き集計を使用します。

SELECT Country, 
     SUM(CASE WHEN Week = 1 THEN quantity END) as quantity_1, 
     SUM(CASE WHEN Week = 1 THEN price END) as price_1, 
     SUM(CASE WHEN Week = 1 THEN price*quantity END) as revenue_1, 
     SUM(CASE WHEN Week = 2 THEN quantity END) as quantity_2, 
     SUM(CASE WHEN Week = 2 THEN price END) as price_2, 
     SUM(CASE WHEN Week = 2 THEN price*quantity END) as revenue_2 
FROM dataset d 
WHERE Week IN (1, 2) 
GROUP BY Country; 
0

を一般的なケースでは、前の週のデータループまでcorrelated subqueryを使用:

SELECT Country, 
     SUM(Quantity * Price) AS Revenue, 
     (SELECT SUM(Quantity * Price) 
     FROM dataset AS PrevWeek 
     WHERE PrevWeek.Week = dataset.Week - 1 
      AND PrevWeek.Country = dataset.Country 
     ) AS "Past Week Revenue" 
FROM dataset 
GROUP BY Country; 
すなわち sum()集約関数に whereから条件を移動する、あります
関連する問題