我正在分析供应商的每件产品成本,并且一直试图计算出这个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值返回给我?
答案 0 :(得分:1)
This is probably what you want ?
(我已经使用MySql完成了,您可能需要对其他数据库进行一些更改)
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`