2017-03-04 36 views
0

表:UnitsSold 列:的實際值的SQL查詢滿足預測某一週

  • 的ProductID
  • 數量
  • 日期
  • ForecastOrActual - 可爲「A」的實際和「F」進行預測。

樣本數據是這樣的:

UnitsSold 
ProductID  Quantity Date   ForecastOrActual 
Widget   100   1-June-2015  F 
Widget   120   1-June-2015  A 
Gizmo   90   1-June-2015  F 
Gizmo   80   1-June-2015  A 
Doohickey  200   1-June-2015  A 

我找了一個SQL查詢,返回一個聚集指標指示如何實績滿足預測某一週。同時,任何的假設

感謝您的支持。由於

+0

將預期的結果是什麼樣根據您的意見

更新? – GurV

+0

請編輯你的問題你需要哪種輸出? – Darshak

+1

後您預期的結果 – Mansoor

回答

0

很難寫,因爲信息你在這裏的代碼,但想法是這樣的:

WITH 
    cte_A AS 
(SELECT qty,product, DATEPART(wk, DATE) AS WEEK 
    WHERE FORCAST='A' 
    GROUP BY product,DATEPART(wk, DATE)) 
, cte_F AS 
(SELECT qty,product, DATEPART(wk, DATE) AS WEEK 
    WHERE FORCAST='F' 
    GROUP BY product,DATEPART(wk, DATE)) 
SELECT cte_A.product,cte_A.week, 
CASE 
WHEN cte_F.qty - cte_A.qty >0 THEN 'Not met forcast' 
WHEN cte_F.qty - cte_A.qty <0 THEN 'Met forcast' 
END AS result 
FROM cte_A join cte_F 
ON cte_A.product=cte_F.product 
AND cte_A.week=cte_F.week 

如果你給我更多的信息,我也許能夠使此代碼更好地爲您。

日期部分功能將會給你一週的人數在一年的任何一天,你就可以使用這個數字每年如果您的數據多年跨越。 希望這有助於。

爲了更好的邏輯(-100〜100)性能,您可以將其更改爲:

WITH 
    cte_A AS 
(SELECT qty,product, DATEPART(wk, DATE) AS WEEK 
    WHERE FORCAST='A' 
    GROUP BY product,DATEPART(wk, DATE)) 
, cte_F AS 
(SELECT qty,product, DATEPART(wk, DATE) AS WEEK 
    WHERE FORCAST='F' 
    GROUP BY product,DATEPART(wk, DATE)) 
SELECT cte_A.product,cte_A.week, 
CASE WHEN cte_F.qty = cte_A.qty THEN 0 
ELSE 100.0*(cte_A.qty - cte_F.qty)/cte_F.qty As Performance 
FROM cte_A join cte_F 
ON cte_A.product=cte_F.product 
AND cte_A.week=cte_F.week 
+0

要求給予了評估提像this..The角色要求你能夠分析大量的數據和目前的指標表明,如果公司改善或在某些領域越來越差。一個很好的例子就是確定我們的預測是否符合實際發生的情況。 編寫一個SQL查詢,該查詢返回單個聚合度量標準,指示實際數據在給定的一週中的預測情況。你做了什麼假設? – Eswar

+0

這將根據你的邏輯給你聚合。我想你也在問什麼邏輯應該是什麼,根據你的數據,你的邏輯是合理的。我可以添加的是一個更「標準」的度量類型,如0到100。而不是0或1(符合預測或不符合) – morinx

+0

我添加了一個新的性能邏輯,只是爲了給你這個想法,讓我知道如果你需要更多的幫助 – morinx

相關問題