2013-11-28 52 views
0

考虑SQL表SQL:累积相加与插入到表

Date  || Visits || Purchases 
20120403   2    1 
20120925   1    0 
20130101   1    1 
20130405   1    0 
20130916   1    0 

我想追加一个列,它是为访问的累计总和,对于购买的累积和列为和最后一列,找出累计购买和访问之间的比例。因此

我的期望表是

Date  || Visits || Purchases || CumVisits || CumPurchases || Ratio 
20120403   2    1    2    1   1/2 
20120925   1    0    3    1   1/3 
20130101   1    1    1    1   1/1 
20130405   1    0    2    1   1/2 
20130916   1    0    3    1   1/3 

我将如何完成累计列的插入和它们在sqlite的平均?

回答

3
SELECT 
    t.Date, 
    t.Visits, 
    t.Purchases, 
    SUM(r.Visits) AS CumVisits, 
    SUM(r.Purchases) AS CumPurchases, 
    SUM(r.Purchases)*1.0/SUM(r.Visits) AS Ratio 
FROM t 
JOIN t AS r ON r.Date BETWEEN SUBSTR(t.DATE, 1, 4) AND t.Date 
GROUP BY t.Date 

SQLFiddle

+0

的''中SUM * 1.0'(r.Purchases)* 1.0/SUM(r.Visits)'是稍显怪异... – Rudie

+0

@Rudie我用它来代替喜欢的' CAST(... AS FLOAT)'! –

+0

为什么选择它? '/'和'*'隐式地做。 OP的列可能是INT或NUM,所以没有必要。细节。 – Rudie