我在 SQL 中有两个表,一个包含 product_id、products_name、department_name 和 product_sales,另一个包含 department_id、department_name 和 over_head_costs。
我希望能够找到所有销售额的总和(按表 1 中的 department_name 分组)并从表 2 中减去 over_head_costs,以便我知道一个部门的盈利情况。然后我想输出这样的信息: department_id、department_name、over_head_costs、产品/部门销售额、total_profit。
我已经搜索了大约 2-3 个小时。我搞砸了连接(我很确定是如何解决这个问题)并找到了 SUM 函数,它实现了求和(但不是按部门),老实说,即使我看到了解决方案我也不会知道。我真的很难理解 SQL。
SELECT SUM(products.product_sales), department_id, departments.department_name, over_head_costs
FROM products, departments
WHERE products.department_name = departments.department_name;
这是我最近的查询,也是我得到的最接近的查询,除了它只返回一个部门(我目前有 3 个部门)。
这大概是我想要的样子:
表 1(产品):
ID ITEM DEPARTMENT SALES
1 Hammer Tools 40
2. Nails Tools 40
3. Keyboard Computer 80
表2(部门):
ID DEPARTMENT COST
1 Tools 20
2. Computer 30
输出:
ID DEPARTMENT COST SALES PROFIT
1 Tools 20 80 60
2. Computer 30 80 50
我不太确定还能尝试什么。我想我只是不了解连接和此类工作的方式。任何帮助将不胜感激。
最佳答案
您可以尝试在子查询中使用 SUM
和 group by
。然后执行加入
。
查询 1:
SELECT d.*,
t1.SALES,
(t1.SALES - d.COST)PROFIT
FROM (
SELECT DEPARTMENT,SUM(SALES) SALES
FROM products
GROUP BY DEPARTMENT
) t1 JOIN departments d on d.DEPARTMENT = t1.DEPARTMENT
Results :
| DEPARTMENT | COST | SALES | PROFIT |
|------------|------|-------|--------|
| Tools | 20 | 80 | 60 |
| Computer | 30 | 80 | 50 |
关于mysql - 如何对列求和,并根据 SQL 中的条件将其连接到另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57504758/