SQL:确定平均值的“最小”或“最小”

时间:2016-11-17 23:50:10

标签: 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值返回给我?

1 个答案:

答案 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`