logo资料库

SQL计算某只股票5日移动平均价和5日交易量加权移动平均价(附SQL语句).docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
SQL 计算某只股票 5 日移动平均价,和 5 日交易量加权移动平均价。(附上建表 语句和查询语句的 SQL) use sql_ma go if COL_LENGTH('matable','ma5')is not null begin alter table matable drop column ma5 end alter table matable add ma5 decimal(18,2)null if COL_LENGTH('matable','volume5')is not null begin alter table matable drop column volume5 end alter table matable add volume5 decimal(28,4)null go declare @i int=1 /*定义循环变量 i*/ declare @j int=1 /*定义循环变量 j*/ declare @n int /*定义变量 n 表示 matable 表中数据的总量*/ declare @close_y float=0 /*定义变量 close_y 表示某天前日这天的收盘*/ declare @close_sum float=0 /*定义变量 close_sum 表示某天前 n 日收盘的总和*/ declare @close_avg float /*定义变量 close_avg 表示某天的 n 日均线值*/ declare @volume_y float=0 /*定义变量 volume_y 表示某天前日这天的收盘*/ declare @volume_sum float=0 /*定义变量 volume_sum 表示某天前 n 日收盘的总和*/ declare @volume_avg float /*定义变量 volume_avg 表示某天的 n 日均线值*/ select @n=count(*)from matable /*查询 matable 数据表中数据的总量*/ declare ma1 cursor scroll for select [dt],[close],[volume] from matable open ma1 declare @close float declare @volume float declare @dt varchar(50) while @i<5 begin fetch absolute @i from ma1 into @dt,@close,@volume set @close_sum=@close_sum+@close set @volume_sum=@volume_sum+@volume set @i=@i+1 end while @i<=@n
begin fetch absolute @i from ma1 into @dt,@close,@volume set @close_sum=@close_sum-@close_y+@close set @close_avg=@close_sum/5 set @volume_sum=@volume_sum-@volume_y+@volume set @volume_avg=@volume_sum/5 update matable set ma5=@close_avg where [dt]=@dt update matable set volume5=@volume_avg where [dt]=@dt fetch absolute @j from ma1 into @dt,@close,@volume set @close_y=@close set @volume_y=@volume set @i=@i+1 set @j=@j+1 end close ma1 select * from matable 与 excel 里计算结果进行对比
分享到:
收藏