Sql 找出每个项目每个员工的总人工成本
我正在学习SQL和我的代码,但在执行代码时,我缺少了原始表Sql 找出每个项目每个员工的总人工成本,sql,oracle,Sql,Oracle,我正在学习SQL和我的代码,但在执行代码时,我缺少了原始表emp_proj中的一些信息。表信息如下所示: EMPNO | PROJNO | HOURSWORKED ------+--------+------------ 1000 | 30 | 32.5 1000 | 50 | 7.5 2002 | 10 | 40 1444 | 20 | 20 1760 | 10 | 5 1760 | 20 | 10 1740 | 50 |
emp_proj
中的一些信息。表信息如下所示:
EMPNO | PROJNO | HOURSWORKED
------+--------+------------
1000 | 30 | 32.5
1000 | 50 | 7.5
2002 | 10 | 40
1444 | 20 | 20
1760 | 10 | 5
1760 | 20 | 10
1740 | 50 | 15
2060 | 40 | 12
我的问题是:
select *
from emp_proj
where hoursworked in (
select sum(hoursworked) as "Total Hours"
from emp_proj
group by empno
)
order by projno;
输出:
EMPNO | PROJNO | HOURSWORKED
------+--------+------------
2002 | 10 | 40
1444 | 20 | 20
2060 | 40 | 12
1740 | 50 | 15
如果有人能告诉我如何对每个员工和项目的工作时间进行分组,我将不胜感激。如果我没有提供足够的信息,很抱歉。我猜不出您的
where
子句的预期目的是什么,尽管我没有得到您需要它的印象。(这近似于找到只在一个项目上工作的所有员工的想法,尽管这仍然无法正常工作。)
我猜不出你的
where
子句的意图是什么,尽管我觉得你无论如何都不需要它。(这近似于找到只在一个项目上工作的所有员工的想法,尽管这仍然无法正常工作。)
请告诉我们你期望的结果。另外,请用您正在运行的数据库标记您的问题:mysql、oracle、sql server…?我希望得到与我的输出相同的结果,但缺少一些员工和项目编号。例如,empno 1000和1760以及projno 30都丢失了,这是因为它们在表中有多行,而您使用WHERE子句说,您希望小时数等于每个员工的小时数之和,这仅适用于只有一行的员工。看看@shawnt00的答案。请告诉我们您期望的结果。另外,请用您正在运行的数据库标记您的问题:mysql、oracle、sql server…?我希望得到与我的输出相同的结果,但缺少一些员工和项目编号。例如,empno 1000和1760以及projno 30都丢失了,这是因为它们在表中有多行,而您使用WHERE子句说,您希望小时数等于每个员工的小时数之和,这仅适用于只有一行的员工。看看@shawnt00的答案。
select projno, empno, sum(hoursworked)
from emp_proj
group by projno, emono
order by projno, empno;