mysql - 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 数据库,一切都很好。
解决方案
您需要在 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 中,您可以使用窗口函数。
推荐阅读
- html - Header 和 div 出现在同一行
- c# - 椭圆拉伸没有效果
- reactjs - React js中的Google登录问题
- python - 创建一个列表,每一步都添加一些元素本身(不替换它们)
- haskell - Json Aeson 的共享数据类型
- angularjs - 在 AngularJS 中使用 $state.go 传递对象
- c# - 如何在更新的视图页面中使用多个模型?
- javascript - 在jquery中自定义附加数据
- php - Laravel Factory - 如何使用工厂制作有意义的虚拟数据
- android - Androidx 首选项不包括 RingtonePreference