使用 SQL,我怎样才能在给定的天数内对每一天的未指定数量的记录进行滚动平均?
Posted
技术标签:
【中文标题】使用 SQL,我怎样才能在给定的天数内对每一天的未指定数量的记录进行滚动平均?【英文标题】:Using SQL, how could I take a rolling average over a given number of days across an unspecified number of records each of those days? 【发布时间】:2020-06-24 17:03:12 【问题描述】:我有以下字段。下面的每条记录都是独一无二的。
我想为每个不同的“record_type”和“something_ind”获取前几天所有字段“score”的滚动平均值
数据:
期望的输出:
SQL 查询:
select
date
,record_type
,something_ind
,avg(score) over(partition by date, record_type, something_ind order by date, record_type, something_ind rows between 6 preceding and current row as rolling_average_score
from table
group by 1,2,3
【问题讨论】:
“滚动平均”是指“累计平均”吗? 【参考方案1】:我想为每个不同的
record_type
和something_ind
获得前几天所有字段score
的滚动平均值。
使用窗口函数。据我了解你的问题,你想要:
select
t.*,
avg(score) over(
partition by record_type, something_ind
order by date
) avg_score
from mytable t
【讨论】:
以上是关于使用 SQL,我怎样才能在给定的天数内对每一天的未指定数量的记录进行滚动平均?的主要内容,如果未能解决你的问题,请参考以下文章