提供带有列 Customer_Id,Order_Date,数量的订单表。如何生成另一列具有过去7天(当前订单日期除外)的数量总和的列。
输入:
CUSTOMER_ID ORDER_DATE QUANTITY
1 2019-05-01 1
1 2019-05-02 1
2 2019-05-02 1
2 2019-05-03 1
2 2019-05-04 1
1 2019-05-05 1
2 2019-05-05 1
1 2019-05-06 1
2 2019-05-06 1
1 2019-05-07 1
2 2019-05-07 1
1 2019-05-08 1
2 2019-05-08 1
1 2019-05-09 1
1 2019-05-10 1
1 2019-05-11 1
2 2019-05-11 1
2 2019-05-12 1
2 2019-05-13 1
2 2019-05-14 1
2 2019-05-15 1
1 2019-05-16 1
输出:
CUSTOMER_ID ORDER_DATE QUANTITY ORDER_HISTORY
1 2019-05-01 1 0
1 2019-05-02 1 1
2 2019-05-02 1 0
2 2019-05-03 1 1
2 2019-05-04 1 2
1 2019-05-05 1 2
2 2019-05-05 1 3
1 2019-05-06 1 3
2 2019-05-06 1 4
1 2019-05-07 1 4
2 2019-05-07 1 5
1 2019-05-08 1 4
2 2019-05-08 1 6
1 2019-05-09 1 4
1 2019-05-10 1 5
1 2019-05-11 1 6
2 2019-05-11 1 4
2 2019-05-12 1 4
2 2019-05-13 1 4
2 2019-05-14 1 4
2 2019-05-15 1 4
1 2019-05-16 1 2
到目前为止,我尝试使用DATE_SUB(ORDER_DATE, INTERVAL 6 DAY)
时没有任何运气。
答案 0 :(得分:2)
一个选项使用相关子查询来查找7天滚动总和:
SELECT
CUSTOMER_ID,
ORDER_DATE,
QUANTITY,
(SELECT SUM(t2.QUANTITY) FROM yourTable t2
WHERE t1.CUSTOMER_ID = t2.CUSTOMER_ID AND
t2.ORDER_DATE >= DATE_SUB(t1.ORDER_DATE, INTERVAL 7 DAY) AND
t2.ORDER_DATE < t1.ORDER_DATE) AS ORDER_HISTORY
FROM yourTable t1
ORDER BY ORDER_DATE;