gpt4 book ai didi

MySQL - 按两个表的 SUM 分组

转载 作者:行者123 更新时间:2023-11-29 03:36:00 24 4
gpt4 key购买 nike

我使用的是 MySQL 5.1,我有两个表,projects 和 employee。 employee(number_project)中有一个外键,它是projects(code_project)的主键。

---> 完全正确:SQL Fiddle

我正在尝试通过以下查询按部门获取项目的总和:

SELECT emp.department_emp AS Department, SUM( pro.price ) AS total_department
FROM employee AS emp, projects AS pro
WHERE emp.number_project = pro.code_project
GROUP BY emp.department_emp

它返回:

DEPARTMENT  TOTAL_DEPARTMENTA
Accounting 2600
IT 4200

但它应该返回:

DEPARTMENT  TOTAL_DEPARTMENT
Accounting 1300
IT 4200

问题在于,当同一部门的员工在同一项目中工作时,查询多次对同一项目求和。

谢谢!

最佳答案

使用子查询创建一个独特的(department, project)组合列表:

select  e.department_emp
, sum(p.price)
from (
select distinct department_emp
, number_project
from Employee
) e
join Projects p
on p.code_project = e.number_project
group by
e.department_emp

Working example at SQL Fiddle.

您的数据库可能需要一些认真的工作。员工到项目应该是多对多关系,而不是多对一关系。并且一个名为“number”的字段在另一个表中不应该被称为“code”。

关于MySQL - 按两个表的 SUM 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com