4

CHECK_AMOUNTSQLServer2008で過去/過去30週間の1週間あたりの平均を取得する方法を見つけようとしています。

私はこのようなことを試しましたが(以下を参照)、私はそれが数週間ではなく数ヶ月であると思います。

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

誰かが私にそれを可能にする方法を教えてもらえますか?

ありがとうございました...

4

3 に答える 3

8

日付を比較する 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

于 2012-12-19T14:48:20.503 に答える
5

これをgroupby句に追加してみてください。

datepart(week, DATE_GIVEN)
于 2012-12-19T14:48:04.780 に答える
3

Datepart を使用してみる

SELECT TOP 30  AVG(CHECK_AMOUNT) AS W2 FROM CHECKS WHERE NOT UNT='256' GROUP BY Datepart(week,DATE_GIVEN)
于 2012-12-19T14:49:48.553 に答える