3

私は SQL Server を初めて使用します (10 分程度)。いくつかの列 (Units、Date、Master ID、AVE Monthly Sales) を含むテスト データベースがあります。平均月間売上は空です。

背景: 私は Excel ファイルからデータをインポートします。ファイルは他のファイルから作成され、平均売上計算時間は Excel に夢中になっているため、この記事を投稿します。

私がやりたいことは、関連する行の日付に基づいて、過去 6 か月の平均販売数を平均販売列に入力することです。つまり、日付が 2016 年 6 月 31 日の場合、2016 年 1 月 1 日から 2016 年 6 月 31 日までの特定のマスター ID (マスター ID は私の一意のキーではありません) の平均販売数を取得する必要があります。 .

前述のように、私は SQL を初めて使用します。SQL Server Express (ローカルで実行) を使用しています。データ テーブル ( SALES) には約 800 万行あります。このような計算を SQL で行うべきかどうかはわかりませんが、現在のアプローチ (Excel) よりも速いかどうかを確認できるように試してみたいと思います。

誰かがこれを例で説明できれば素晴らしいでしょう。

ありがとうございました。マーク。

4

2 に答える 2

0

someuniquefield を主キー列に置き換え、最初に select だけでテストします。

UPDATE t SET [AVE Monthly Sales] = x.avgsum FROM table t JOIN
(SELECT someuniquefield ,
  AVG(CASE WHEN date > DATEADD(m, -6, date - DATEPART(d, date) + 1) THEN Units END) OVER (ORDER BY Date DESC) avgsum 
    FROM table  ) as x
ON x.someunqiuefield.=t.someuniquefield
于 2016-12-06T11:49:25.837 に答える