【发布时间】:2020-07-26 19:33:09
【问题描述】:
我正在尝试找到一种方法来编写一个简单的查询,并且在使用 Left/Right JOIN 函数时遇到了一些困难。
基本上,我想对所有出售给客户的商品 INCOME 求和 然后将所有费用相加,即支付给供应商的工资和付款(为了简单起见)
产品订单表如下所示:
╔══════════════╦════════════════╦══════════════════╗
║ order_number ║ product_number ║ product_quantity ║
╠══════════════╬════════════════╬══════════════════╣
║ 1000001 ║ 150009 ║ 50 ║
╠══════════════╬════════════════╬══════════════════╣
║ 1000002 ║ 150001 ║ 4100 ║
╠══════════════╬════════════════╬══════════════════╣
║ 1000002 ║ 150002 ║ 1200 ║
╠══════════════╬════════════════╬══════════════════╣
║ 1000002 ║ 150003 ║ 1350 ║
╠══════════════╬════════════════╬══════════════════╣
║ 1000002 ║ 150004 ║ 8200 ║
╠══════════════╬════════════════╬══════════════════╣
产品价格表如下所示:
╔════════════╦══════════════════════════════════╦═══════════════╗
║ product_id ║ product_name ║ product_price ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150001 ║ Printing Paper ║ 13.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150002 ║ Coated Paper ║ 8.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150003 ║ Tissue Paper ║ 9.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150004 ║ Cardboard ║ 9.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150005 ║ Paperboard ║ 7.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150006 ║ Carton ║ 5.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150007 ║ Fineart Paper ║ 26.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150008 ║ Pilot Pen 0.4 ║ 5.00 ║
╠════════════╬══════════════════════════════════╬═══════════════╣
║ 150009 ║ Stabilo Boss Highligher - Yellow ║ 4.50 ║
╚════════════╩══════════════════════════════════╩═══════════════╝
向供应商支付的款项与产品基本相同,只需从产品利润结果中扣除,并与所有员工的工资总和相结合即可。
我总共有 2 个收入表和 3 个费用表(员工、材料订单、材料价格)。
我最终的目标是:
╔══════════════╗
║ total_profit ║
╠══════════════╣
║ 2305000 ║
╚══════════════╝
产品订单:
CREATE TABLE Customer_Order_Details (
co_ID INT, #FK
p_ID INT, #FK
cod_quantity INT NOT NULL,
FOREIGN KEY (co_ID) REFERENCES Customer_Order (co_ID) ON DELETE CASCADE,
FOREIGN KEY (p_ID) REFERENCES Product (p_ID) ON DELETE CASCADE,
PRIMARY KEY (co_ID, p_ID)
);
产品价格表:
CREATE TABLE Product (
p_ID INT PRIMARY KEY,
p_name VARCHAR(80) NOT NULL,
p_price NUMERIC(10,2)
);
*编辑-尝试在第一和第二表之间组合并从第三表中扣除
SELECT SUM(e.e_salary)/4 AS salary_expenses
FROM Employee AS e;
SELECT SUM(vod.vod_quantity * rm.rm_price) AS total_rm_expenses
FROM Vendor_Order_Details AS vod
JOIN Raw_Material AS rm ON rm.rm_ID = vod.rm_ID;
SELECT SUM(cod.cod_quantity * p.p_price) AS total_income
FROM Customer_Order_Details AS cod
JOIN Product AS p ON p.p_ID = cod.p_ID;
谢谢!!
【问题讨论】:
标签: sql