在sql中如何创建移动平均线?
当前表:
Date Clicks 2012-05-01 2,230 2012-05-02 3,150 2012-05-03 5,520 2012-05-04 1,330 2012-05-05 2,260 2012-05-06 3,540 2012-05-07 2,330
所需表或输出:
Date Clicks 3 day Moving Average 2012-05-01 2,520 4,360 2012-05-04 1,330 3,260 3,120 2012-05-06 3,540 3,320 2012-05-07 2,010
解决方法
一种方法是在同一张表上加入几次.
select (Current.Clicks + isnull(P1.Clicks,0) + isnull(P2.Clicks,0) + isnull(P3.Clicks,0)) / 4 as MovingAvg3 from MyTable as Current left join MyTable as P1 on P1.Date = DateAdd(day,-1,Current.Date) left join MyTable as P2 on P2.Date = DateAdd(day,-2,Current.Date) left join MyTable as P3 on P3.Date = DateAdd(day,-3,Current.Date)
调整ON-Clauses的DateAdd组件以匹配您是否希望将移动平均值严格从过去到现在或几天前到几天.
>对于只需要几个数据点的移动平均值的情况,这很适用.>这不是用多个数据点移动平均线的最佳解决方案.
原文地址:https://www.jb51.cc/mssql/81722.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。