运行总和我有下面的所有列的表,除了黄色的有间隙
基本上表有客户的ID,出售发生的日期和总金额的花费当天的客户(销售)。现在我必须计算当天每个客户的时间范围内的累计销售额,包括当天的销售额。例如,设置时间框架为3天的客户2233买了两次(14日没有),所以他15日的累计销售额是26,而在13日他们是25.
我不能创建新表所以我试图这种方法,但它是相当缓慢
SELECT t.dt,
Count(CASE WHEN t.running_sale < 1.99 THEN 1 ELSE NULL END) as "Low spender",
Count(CASE WHEN t.running_sale BETWEEN 1.99 and 4.99 THEN 1 ELSE NULL END) as "Medium spender",
Count(CASE WHEN t.running_sale > 4.99 THEN 1 ELSE NULL END) as "High spender"
FROM (SELECT dt, channel, id, (
SELECT SUM(revenue)
FROM myTable rd
WHERE CAST(rd.dt AS DATE)
BETWEEN (CAST(rd.dt AS DATE) - INTERVAL '3' DAY) AND CAST(rd.dt AS DATE) AND
rd.id = r.id
) running_sale from myTable r) t
WHERE channel = 'retail'
AND dt BETWEEN '2017-06-01' AND '2017-06-15'
GROUP BY dt
limit 100
使用分析? '总和(销售)OVER(分区由ID ORDER BY日期asc 行之间2 PRECEDING)作为RunningSales' – xQbert
不起作用,因为将在第12天采取ID 2233将需要11和06,这是一个差距超过3天。 –
我有点得到它,但我不明白为什么2233在15日有26,那么如果范围是3天前包括15,14,13这将给22不是26.或者应该包括12,所以范围是15,13,13,12? – xQbert