Mysql 如何编写SQL查询来计算三个连续值的平均值?
我有一张这样的桌子Mysql 如何编写SQL查询来计算三个连续值的平均值?,mysql,sql,Mysql,Sql,我有一张这样的桌子 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 tim
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;
假设年份之间没有间隔(如您的样本数据),您可以自行加入表并按用户ID、时间分组,以获得平均值:
select
t.userid, t.time, avg(tt.noofvisits) NoOfVisits
from tablename t inner join tablename tt
on tt.time between t.time - 2 and t.time
group by t.userid, t.time
请参阅。结果:
您使用的是哪个版本的MySQL?你应该如何处理两者之间的一年?请将这些详细信息添加到问题中。可能重复
| userid | time | NoOfVisits |
| ------ | ---- | ---------- |
| 1 | 2014 | 50 |
| 2 | 2015 | 55 |
| 3 | 2016 | 60 |
| 4 | 2017 | 70 |
| 5 | 2018 | 80 |
| 6 | 2019 | 90 |