我使用的是 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/