数据如下:
SeqID   Data1      Data2
1000    3453       3454
1001    2377456    ....
1002    4574556
1003    4346456
1004    5756
1005    4954456
1007    676456
....需求如下:
按SeqID的顺序,取前N个样本的标准差(每个结果,都是当前行的前N个样本的covar_samp(Data1,Data2))。
结果如下:
SeqID   标准差
1000    结果1
1001    结果2
1002    结果3
1003    结果4
....

解决方案 »

  1.   

    如果是只取1天的结果为会,可是每天取得话就不会来。请尽量不要用游标的形式计算。下面是指定了一个具体的SeqID的取法:
    select covar_samp(Data1,Data2) 
    from Table
    where SeqID in
    (
      --实际上,SeqID不是这么取得,下面的取法只是为了表达方便
      select SeqID from Table
      where SeqID<=1005 and RowNum<=N
      order by SeqID desc
    )如果指定的SeqID是一个范围,那么该如何写?
      

  2.   

    试一下这个;select covar_samp(data1,data2) over(order by seqid rows between N preceeding and current row) from table中间的大写的N则由你自己改变.如果你要写前5个样本,则N=5
      

  3.   

    附:在sql查询中,可以这样:
    select covar_samp(data1,data2) over(order by seqid rows between N preceeding and current row) from table 
    但是在函数及存储过程中,只能这样:
    select covar_samp(data1,data2) over(order by seqid rows between N preceeding and 0 following) from table