2016-11-17 155 views
2

我正在對供應商的每個產品的成本進行分析,並試圖解決此SQL代碼的粒度或過程。表看起來像下面的東西:SQL:確定平均「最低」或「最低」

Supplier  ProductCount  Cost 
SupA   2    564.00 
SupA   1    200.00 
SupB   3    650.00 
SupC   2    600.00 
etc. 

而我想的是,包含像這樣的總結表:

Supplier  TotalCount  TotalCost  AvgCost  MinAvgCost (expected) 
SupA   3    764.00  254.67  ?(200) 
SupB   3    650.00  216.67  ?(216.67) 
SupC   2    600.00  300.00  ?(300.00) 

我可以用一個簡單的SUM函數做別人,但我很困惑至於如何做MinAvgCost,因爲如果我簡單地做一個SELECT MIN(AvgCost),它會返回與AvgCost相同的值。

如何定義代碼應在每行上劃分Cost和ProductCount,然後返回該公式的MIN值?

+3

它會幫助,如果你可以標記正在使用的數據庫管理系統。還要在預期的結果中填入'?'。 –

+3

爲什麼在結果查詢'SupA'的TotalCost是564?不應該是764? – esiprogrammer

+1

「minavgcost」的公式是什麼? –

回答

1

This is probably what you want ?

(我已經與MySQL做它,你可能需要在其他一些DB變化)

SELECT 
    Supplier, 
    sum(ProductCount) AS TotalCount, 
    sum(Cost) AS TotalCost, 
    (sum(Cost)/sum(ProductCount)) AS AvgCost, 
    min(Cost/ProductCount) AS MinAvgCost 
FROM t 
GROUP BY `Supplier` 
+0

作品!謝謝! – Lazarius

+0

@Lazarius,不客氣;)順便說一句,你的數據庫是什麼? MySQL? – Blag

+0

實際的DB本身是HP Vertica,但前端使用SQL。 – Lazarius