すべての顧客と2009年の毎月について、毎月の前、毎月、顧客と月のリストを表示します。ここでは、毎月の平均購入数はその月の前の平均購入数です。それが表示されるはずです何のavg()、1ヶ月前、および1ヶ月後にクエリを作成するための支援
例:
name month avgBefore avgAfter
P.Anderson 3 13 35
(名前、コード、月、avgAmount)(名前を表示するリストを含むビューV1を作成するために、比較的容易である一方、私の問題は、あります、毎月の平均購入数)、私は残りの作業(毎月の前/後に平均を計算する)を行う方法を知らない(またはむしろ想像できません)。
例:avereagebefore月3 = SUM(月1から3までのすべての平均)、avereageAfter月3 =合計(最大3〜すべてのAVG(月)
は、誰かが私を助けてくださいすることができ
?
例:ビューV1は、私が(S作成した12のビューなど)ビューの各月を分離しようとした
SELECT
c.name, c.code,
MONTH(t.DateTime) AS minas,
AVG(t.charged_amount) AS total
FROM
dbo.customers AS c
INNER JOIN
dbo.accounts AS a ON c.code = a.customer_code
INNER JOIN
dbo.creditcard AS cc ON a.acc_number = cc.acc_number
INNER JOIN
dbo.transactions AS t ON cc.cc_number = t.cc_number
INNER JOIN
dbo.shop AS s ON t.shop_code = s.shop_code
WHERE
(YEAR(t.DateTime) = 2009)
GROUP BY
c.name, c.code, MONTH(t.DateTime)
(あなたはManagement Studioでビューを編集するときに示すように)このようなものです:
create view [Dec](name, code, minas, averg)
as
select * from v1
where minas = 12
、その後は、このでした:
select
v1.name, v1.code, v1.minas, sum(total)
from
v1, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, [Dec]
where
v1.minas <= Jan.minas or v1.minas <= Feb.minas or
v1.minas <= Mar.minas or v1.minas <= Apr.minas or
v1.minas <= May.minas or v1.minas <= Jun.minas or
v1.minas <= Jul.minas or v1.minas <= Aug.minas or
v1.minas <= Sep.minas or v1.minas <= Oct.minas or
v1.minas <= Nov.minas or v1.minas <= [Dec].minas
group by
v1.name,v1.code,v1.minas
をそれはうまくいきませんでした。
私が試したテストのためにも:
select
v1.name, v1.code, v1.minas, sum(v1.total)
from
v1, Jan as v2, Feb as v3
where
v1.code = v2.code and v1.code = v3.code
group by
v1.name, v1.code, v1.minas
が、結果は月2で
Nelson J. Arredondo 100606 1 75
Nelson J. Arredondo 100606 2 100
Nelson J. Arredondo 100606 5 250
だった、それは175と月の5 250 + 175
ことができますされている必要がありますあなたは私がこれを理解するのを手伝ってください?
SQLを実行する前に、統計的背景を最も明確にすると思います。 3ヶ月前のavereage =合計(すべて1月から3月の平均)。 1)恐らくここで誤解を招く名前を選んで、3月を除外し、ここでモンティセ1と2を使用します。 2)平均値の和だけを使用しても似ているわけではありません。私は少なくとも2で割り切っています。そして、実践では、以前の範囲のavarageを使用します。 –
上記はクエリが返さなければならないものの一例です。 ActualluビューV1は、毎月、各顧客、平均購入を持っています。また、私が前にしようとしたことは、前の月の各顧客のすべての平均を合計することでした。 2月にNelson J. Arredondoが1月と1月に75を平均購入したと言うことができます。その後、2月前の平均購入額は75、2月以降は175でした。5月と同じように、マット前の平均購入額は75 + 100 = 175です。 after mayは75 + 100 + 250 = 375です – George