2016-11-17 115 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