(SQL) 选择 SUM of (列 1) * 最小值(列 2),其中列 1 和 2 共享一个 ID



我对SQL很陌生,所以这个查询一直让我头疼。作为参考,我有两个表(简化版本):

CREATE TABLE PARTS_USED
(  
Part INT NOT NULL,
Product INT NOT NULL,
Quantity INT
PRIMARY KEY(Part, Product)
);

CREATE TABLE SUPPLY
(
Vendor INT NOT NULL,
Part INT NOT NULL,
Price DECIMAL(8,2) NOT NULL,
PRIMARY KEY(Vendor, Part),
);

ProductPart都是唯一的 ID。

我在这里要做的是获取每个产品的总"成本"((Quantity * (Minimum Part Price))的总和)。

到目前为止,我有这个查询:

CREATE VIEW PRODUCT_COST(ProductID, TotalCost)
AS 
SELECT 
PARTS_USED.Product, 
SUM(PARTS_USED.Quantity * (SUPPLY.Price))
FROM 
PARTS_USED
INNER JOIN 
SUPPLY ON PARTS_USED.Part = SUPPLY.Part
GROUP BY 
PARTS_USED.Product;

但是,我得到MIN(SUPPLY.Price)被证明是困难的;我希望能够将SELECT行中的SUPPLY.Price更改为MIN(SUPPLY.Price),但这不起作用。随着表格的设置方式,我对应该如何使用 JOIN 感到非常迷茫。

因为乘法是可交换的,所以你可以只取数量之和和最小价格的乘积:

CREATE VIEW PRODUCT_COST(ProductID, TotalCost) AS
SELECT pu.Product, SUM(pu.Quantity) * MIN(s.Price) AS "Total Cost"
FROM PARTS_USED pu
INNER JOIN SUPPLY s ON s.Part = pu.Part
GROUP BY pu.Product;

最新更新