1

私は、顧客が私たちと一緒にいる平均的な時間を把握することを任されています. (具体的には、顧客になった日から最後の注文をした日まで。)

これを適切に行っているかどうかは 100% 確信が持てませんが、顧客をデータベースに入力した日付を収集し、注文テーブルに移動して最新の注文日を取得し、それらを一時ファイルにダンプすることを考えました。次に、これら 2 つの日付の間の時間の長さを計算し、その数値に基づいて平均を集計します。

(私は他のいくつかのぐらぐらした時間のものをしなければなりませんが、これは私のお尻を蹴っているものです) これの最終的な目標は、「平均して、お客様は 4 年と 3 か月間私たちと一緒にいる」と言えるようになることです。 ." (または、データが示すものは何でも。)

    SELECT * INTO #AvgTable
      FROM(
         SELECT DISTINCT (c.CustNumber) AS [CustomerNumber]
         , COALESCE(convert( VARCHAR(10),c.OrgEnrollDate,101),'') AS [StartDate]
         , COALESCE(CONVERT(VARCHAR(10),MAX(co.OrderDate),101),'')AS [EndDate]
          ,DATEDIFF(DD,c.OrgEnrollDate, co.OrderDate) as [LengthOfTime]

         FROM dbo.Customer c
         JOIN dbo.CustomerOrder co ON c.ID = co.CustomerID

         WHERE c.Archived = 0
         AND co.Archived =0
         AND c.OrgEnrollDate IS NOT NULL
         AND co.OrderDate IS NOT NULL

         GROUP BY c.CustNumber
         , co.OrderDate 2
         )

     --This is where I start falling apart



      Select AVG[LengthofTime]

      From #AvgTable
4

2 に答える 2

0

私の推測では、データを一時テーブルに保存しているため、datediff の整数の結果が暗黙的に日時に変換されていると思います (平均を行うことはできません)。

平均を一時テーブルに保存しないでください (一時テーブルすらありませんが、それはまったく別の会話です)。あなたの選択で差分をとってください。

于 2013-04-12T16:10:35.923 に答える