从订单表中检索过去7天的订单历史记录

时间:2019-06-01 00:42:56

标签: mysql

提供带有列 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)时没有任何运气。

1 个答案:

答案 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;