【问题标题】:(SQL) Select SUM of (Column 1) * Min(Column2) Where Column 1 and 2 share an ID(SQL) Select SUM of (Column 1) * Min(Column2) where Column 1 and 2 share an ID
【发布时间】:2021-12-30 16:33:50
【问题描述】:

我对 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 感到很迷茫。

【问题讨论】:

    标签: sql join view min


    【解决方案1】:

    因为乘法是可交换的,你也许可以只取数量之和与最低价格的乘积:

    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;
    

    【讨论】:

      猜你喜欢
      • 2019-03-23
      • 2021-11-30
      • 2020-01-19
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多