我对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),
);
Product
和Part
都是唯一的 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;