mysql - 如何编写 SQL 查询来计算三个连续值的平均值?

标签 mysql sql

我有一张这样的 table

userID    time    NoOfVisits
  1       2014       50
  2       2015       60
  3       2016       70
  4       2017       80
  5       2018       90
  6       2019       100

我需要编写一个 SQL 查询,它将打印特定网站过去 3 年 NoOfVisits 的时间和平均值。

输出应为

userID    time    NoOfVisits   
  1       2014    50.0000
  2       2015    55.0000
  3       2016    60.0000
  4       2017    70.0000
  5       2018    80.0000
  6       2019    90.0000

说明:

对于用户 ID 6 (80+90+100)/3=90.0000

请帮我解决这个问题。

最佳答案

您可以使用 MySQL 8+ 中提供的累积平均值:

select t.*,
       avg(visits) over (order by time rows between 2 preceding and current row) as avg_visits_3
from t;

关于mysql - 如何编写 SQL 查询来计算三个连续值的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57738588/

相关文章:

php - ajax加载mysql数据到多个div

mysql - 在多个 LEFT JOIN 查询上使用 ORDER BY

使用多个表的 SQL Server 更新

sql - 选择不带 NULL 的不同的多个字段

SQL获取时间戳差大于30时id的个数

sql - 如何解决 PostgreSQL 中缺少 FROM 子句的问题?

php - Mysql查询不返回任何行

c# - 无法在 x64 位 PC 上运行 Windows 应用程序

mysql - 如何将mysql数据库中的重复行更改为唯一值

sql - Django LEFT OUTER JOIN 在两列上不是外键