Sql server 累积平均数
我希望创建一个包含三列的表: A:一周 B:一周的平均值 C:累积平均数 以下是我的代码到目前为止的样子: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
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现在试试。