【问题标题】:How do I sum a column, and join it to another table based on a condition in SQL?如何对列求和,并根据 SQL 中的条件将其连接到另一个表?
【发布时间】:2019-08-15 13:16:58
【问题描述】:

我在 SQL 中有两张表,一张包含 product_id、products_name、department_name 和 product_sales,另一张包含 department_id、department_name 和 over_head_costs。

我希望能够找到所有销售额的总和(在表 1 中按部门名称分组)并从表 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

我不太确定还能尝试什么。我想我只是不了解连接和此类工作的方式。任何帮助将不胜感激。

【问题讨论】:

  • 请以表格形式提供样本数据,并在此基础上提供所需的结果。
  • @peterm 我将它编辑到 OP 中。格式化有点糟糕,但我希望这足以让这个想法得到理解。感谢收看!

标签: mysql


【解决方案1】:

您可以尝试在子查询中使用SUMgroup by。然后做join

查询 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 |

【讨论】:

  • 抱歉回复延迟,但我终于有机会处理这个查询,但它不起作用。我能够将其编辑为以下 SELECT * FROM (SELECT department_name, SUM(product_sales)SALES FROM products GROUP BY department_name) departments JOIN departments ON departments.dept_name = department_name; 部分有效但复制了一些信息,因此表格如下所示:department_name | SALES | department_id | dept_name | over_head_costs Tools 36 1 Tools 1500
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2019-12-23
  • 2011-09-24
  • 1970-01-01
  • 2014-10-20
相关资源
最近更新 更多