Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 累积平均数_Sql Server_Average - Fatal编程技术网

Sql server 累积平均数

Sql server 累积平均数,sql-server,average,Sql Server,Average,我希望创建一个包含三列的表: A:一周 B:一周的平均值 C:累积平均数 以下是我的代码到目前为止的样子: SELECT SubSQLQuery.DocWeek as "Week", AVG(SubSQLQuery.AvePayDelay) as "Average" from (SELECT UPPER(ch.HID) as CodeClient, ch.HDOCNO as DocNumber, ch.HDOCDATE as DocDate, ch.HY

我希望创建一个包含三列的表:

A:一周 B:一周的平均值 C:累积平均数 以下是我的代码到目前为止的样子:

SELECT  
SubSQLQuery.DocWeek as "Week",
AVG(SubSQLQuery.AvePayDelay)  as "Average"

from (SELECT
    UPPER(ch.HID) as CodeClient,
    ch.HDOCNO as DocNumber,
    ch.HDOCDATE as DocDate,
    ch.HYEAR as DocYear,
    week(ch.HDOCDATE)-1 as DocWeek,
    ch.HMDATE as PayDate,
    month(ch.HMDATE) as PayMonth,
    (ch.HDUEDATE-ch.HDOCDATE) +0.00 as AvePayDelay

from AC_CHISTO ch

where ch.HFYEAR='2016'
and ch.HMDATE IS NOT NULL
and UPPER(ch.HDBK)='VEN') as SubSQLQuery
GROUP BY SubSQLQuery.DocWeek
这就是结果:

我想要的是确定C列每周的累积平均值。所以对于第4周,我需要得到从第1周到第4周的平均值


谢谢您的帮助。

如果我理解正确,您可以通过相关查询执行此操作:

  SELECT s.DocWeek,
         s.AverageCol.
         (SELECT AVG((ch2.HDUEDATE - ch2.HDOCDATE) + 0.00) 
          FROM AC_CHISTO ch2
          where ch2.HFYEAR = '2016' and ch2.HMDATE IS NOT NULL
            and UPPER(ch2.HDBK) = 'VEN' and (week(ch2.HDOCDATE) -1) <= (week(s.HDOCDATE) - 1)
           ) as CumAvg
  FROM(
      SELECT week(ch.HDOCDATE) - 1 as DocWeek,
             AVG((ch.HDUEDATE - ch.HDOCDATE) + 0.00) as AverageCol,
      from AC_CHISTO ch
      where ch.HFYEAR = '2016'
            and ch.HMDATE IS NOT NULL
            and UPPER(ch.HDBK) = 'VEN'
      GROUP BY week(ch.HDOCDATE) - 1) s

我不得不重写一点,但效果非常好:

  SELECT s.DocWeek,
     s.AverageCol,
     (SELECT AVG((ch2.HDUEDATE - ch2.HDOCDATE) + 0.00) 
      FROM AC_CHISTO ch2
      where ch2.HFYEAR = '2016' 
      and ch2.HMDATE IS NOT NULL
      and UPPER(ch2.HDBK) = 'VEN' 
      and (week(ch2.HDOCDATE) -1) <= s.DocWeek
       ) as CumAvg
  FROM(
  SELECT week(ch.HDOCDATE) - 1 as DocWeek,
         AVG((ch.HDUEDATE - ch.HDOCDATE) + 0.00) as AverageCol
  from AC_CHISTO ch
  where ch.HFYEAR = '2016'
  and ch.HMDATE IS NOT NULL
  and UPPER(ch.HDBK) = 'VEN'
  GROUP BY week(ch.HDOCDATE) - 1) s

再次感谢

你有12周的时间,为什么你只需要1到4周weeks@VincentMaloir现在试试。