日期:2014-05-17  浏览次数:20592 次

最近4天平均值,sql语句如何写?
本帖最后由 nonion 于 2013-03-09 12:33:05 编辑
有张表如下

st        date            vol
....  
....
101   2013/1/2            12
201   2013/1/8            5
201   2013/1/10            5
101   2013/1/18            11
101   2013/2/7            12
201   2013/2/6            5
101   2013/2/14            11
201   2013/2/28            3
101   2013/3/1            11
201   2013/3/1            6
101       2013/3/5            10
201       2013/3/5            4

根据存储的date日期,算出st最近4天的平均值
比如
101最近4天(3/5,3/1,2/14,2/7)的平均值=(10+11+11+12)/4=11
201最近4天(3/5,3/1,2/28,2/6)的平均值=(4+6+3+5)/4=4.5

st的种类有上百种
这sql语句如何写

------解决方案--------------------
select st,cast(avg(vol*1.0) as decimal(28,2))vol from tb a
where exists (select 1 from (select top 4 b.date from tb b where a.st=b.st order by b.date desc)t where t.date=a.date)
 group by a.st