あなたはSELECT
& GROUP BY
SELECT departments,
SampleSize = Count(*),
SumRID = Sum(ID),
SumOrderQty = Sum([OrderQuantity]),
SumXX = Sum(ID * ID),
SumYY = Sum([OrderQuantity] * [OrderQuantity]),
SumXY = Sum(ID * [OrderQuantity])
FROM #Temp_Regression
GROUP BY departments
でdepartments
列を追加する必要があります。
-- calculate sample size and the different sums
SELECT
@sample_size = COUNT(*)
,@sumX = SUM(ID)
,@sumY = SUM([OrderQuantity])
,@sumXX = SUM(ID*ID)
,@sumYY = SUM([OrderQuantity]*[OrderQuantity])
,@sumXY = SUM(ID*[OrderQuantity])
FROM #Temp_Regression;
-- output results
SELECT
SampleSize = @sample_size
,SumRID = @sumX
,SumOrderQty [email protected]
,SumXX = @sumXX
,SumYY = @sumYY
,SumXY = @sumXY;
これらの変数は、トレンドラインをうまくするために使用されていますslope
& intercept
すべての部門
;WITH cte
AS (SELECT departments,
sample_size = Count(*),
sumX = Sum(ID),
sumY = Sum([OrderQuantity]),
sumXX = Sum(ID * ID),
sumYY = Sum([OrderQuantity] * [OrderQuantity]),
sumXY = Sum(ID * [OrderQuantity])
FROM #Temp_Regression
GROUP BY departments),
slope
AS (SELECT departments,
Sample_Size,
sumX,
sumY,
slope = CASE
WHEN sample_size = 1 THEN 0 -- avoid divide by zero error
ELSE (sample_size * sumXY - sumX * sumY)/(sample_size * sumXX - Power(sumX, 2))
END
FROM cte)
SELECT departments,
slope,
intercept = (sumY - (slope * sumX))/sample_size
FROM slope
指定された表に部門関連の列はありますか? –
はい、テンポラリテーブルではdepartmentというカラムがあり、データはすべて部門別にフィルタリングされ、ID iveはrow_numberを使用して各グループのユニークな数値を取得します。 – user3691566