SQL Server:过去30周每周平均得分

时间:2012-12-19 14:44:56

标签: sql sql-server-2008

我正在尝试弄清楚如何在SQL Server 2008中获得过去/过去30周每周的平均CHECK_AMOUNT

我试过这样的事情(见下文),但我认为这是几个月而不是几个星期。

SELECT TOP 30
    AVG(CHECK_AMOUNT) AS W2 
FROM 
    CHECKS 
WHERE 
    NOT UNT='256' 
GROUP BY 
    YEAR(DATE_GIVEN), MONTH(DATE_GIVEN) 

任何人都可以告诉我如何才能做到这一点,

谢谢...

3 个答案:

答案 0 :(得分:7)

只需使用where子句比较日期:

  select AVG(CHECK_AMOUNT)
  from CHECKS
  WHERE NOT UNT='256' and DATEDIFF(d, Date_Given, getdate()) <= 30*7

对不起我误解了这个问题。你想要每周的平均值。您的原始查询非常接近

  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

我要离开where条款进行选择 - 而不是使用top 30 - 万一有几个星期没有支票。

答案 1 :(得分:4)

您可以尝试将其添加到group by子句吗?

datepart(week, DATE_GIVEN)

答案 2 :(得分:2)

尝试使用Datepart

SELECT TOP 30  AVG(CHECK_AMOUNT) AS W2 FROM CHECKS WHERE NOT UNT='256' GROUP BY Datepart(week,DATE_GIVEN)