正确使用子查询有问题(Oracle SQL)



我正在努力思考子查询,在大多数情况下,我在不同的上下文中都取得了成功。然而,这一次却让我不知所措。

我有一个时间表表,里面有两个工资期的正常工作时间和加班时间。它与我的员工表共享一个员工ID密钥。

我想检查的是谁在两个工资期之间总共工作了80个小时,然后显示他们的姓名+工资率。

下面的代码是错误的,但我为使其工作所做的任何更改都会导致错误。

SELECT Employee.Lastname, Job.Payrate * 1.05 "Increased"
FROM Employee JOIN Job
ON Employee.Jobcode = Job.Jobcode
WHERE EmpID IN (SELECT SUM(Reghours + Otimehours) FROM Timesheet GROUP BY EmpID);

有人能告诉我哪里出了问题吗?如果需要更多的上下文,请告诉我。

这是针对我之前的问题,在这个问题中,我只希望在一个工资期内工作超过40小时。我试着编辑这个来让它发挥作用,但我觉得我忽略了一些简单的东西。

SELECT Employee.Lastname, ROUND(Job.Payrate * 1.05, 2) "Increased"
FROM Employee JOIN Job
ON Employee.Jobcode = Job.Jobcode
WHERE EmpID IN (SELECT EmpID FROM Timesheet WHERE Payweekenddate = '30-MAY-03' AND Reghours + Otimehours > 40);

您在子查询-中缺少检查EMPID

SELECT Employee.Lastname, Job.Payrate * 1.05 "Increased"
FROM Employee JOIN Job
ON Employee.Jobcode = Job.Jobcode
WHERE EmpID IN (SELECT EmpID 
FROM Timesheet
GROUP BY EmpID
HAVING SUM(Reghours + Otimehours) >= 80 );

最新更新