首页 > 解决方案 > SQL 计算过去 7 天支付的平均金额

问题描述

我有一个访问了 2 列的表和支付的金额

visited         amount paid
-------------------------
2018-04-01      100
2018-04-02      200
2018-04-03      300

我想获得过去 7 天(今天和过去 6 天)支付的平均金额以及访问结果和支付的金额:

输出:

visited         amount      average of last 7 days
---------------------------------------------------
2018-04-01      100         100
2018-04-02      200         150
2018-04-03      300         200

解释:

Row 1 : average amount = 100/1 = 100
Row 2 : average amount = (100 + 200)/2 = 150
Row 3 : average amount = (100 + 200 + 300)/3 = 200 

我正在尝试使用 MySQL 或 Oracle 数据库,一切都很好。

标签: mysqlsqloracle

解决方案


您需要在 MySQL 5.x 中使用相关子查询:

SELECT visited, amount_paid, (
    SELECT AVG(amount_paid)
    FROM t AS x
    WHERE x.visited >= t.visited - INTERVAL 6 DAY
    AND   x.visited <= t.visited
) AS 7_day_avg
FROM t

在 MySQL 8 和 Oracle 中,您可以使用窗口函数。


推荐阅读