com*_*alt 4 sql sql-server-2008
我想弄清楚如何获得CHECK_AMOUNTSQL Server 2008中过去/过去30周的每周平均值.
我试过这样的事情(见下文),但我认为这是几个月而不是几个星期.
SELECT TOP 30
AVG(CHECK_AMOUNT) AS W2
FROM
CHECKS
WHERE
NOT UNT='256'
GROUP BY
YEAR(DATE_GIVEN), MONTH(DATE_GIVEN)
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何才能做到这一点,
谢谢...
只需使用where子句比较日期:
select AVG(CHECK_AMOUNT)
from CHECKS
WHERE NOT UNT='256' and DATEDIFF(d, Date_Given, getdate()) <= 30*7
Run Code Online (Sandbox Code Playgroud)
对不起; 我误解了这个问题.你想要每周的平均值.您的原始查询非常接近
select DATEDIFF(d, Date_Given, getdate())/7 as weeks_ago, AVG(CHECK_AMOUNT)
from CHECKS
WHERE NOT UNT='256' and DATEDIFF(d, Date_Given, getdate()) <= 30*7
group by DATEDIFF(d, Date_Given, getdate())/7
Run Code Online (Sandbox Code Playgroud)
我将离开where条款进行选择 - 而不是使用top 30- 如果有几周没有检查.