(SQL) Select SUM of (Column 1) * Min(Column2) where Column 1 and 2 share an ID
Posted
技术标签:
【中文标题】(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),
);
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 感到很迷茫。
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于(SQL) Select SUM of (Column 1) * Min(Column2) where Column 1 and 2 share an ID的主要内容,如果未能解决你的问题,请参考以下文章
vuepress build提示YAMLException: end of the stream or a document separator is expected at line 7, colu
SQL Server:带有内部 SELECT 和子 SELECT 的 SUM()。每次都出错
SQL 在 Select 中使用 SUM() 在视图上创建索引
SQL 语句 select sum(a) from table1 where b=3