我正在尝试查找每种类型所有者的工作时间总和,不包括经验级别为“初级”的员工以及任何少于 3 名成员的经验级别类型的员工的服务。我一直在研究这个问题,但无法得到答案......
表格:
OWNER ( OwnerID, OwnerName, OwnerEmail, OwnerType )
PROPERTY ( PropertyID, PropertyName, Street, City, State, Zip, OwnerID )
EMPLOYEE ( EmployeeID, LastName, FirstName, CellPhone, ExperienceLevel )
SERVICE ( PropertyID, EmployeeID, ServiceDate, HoursWorked )
我最新的查询:
SELECT OwnerType, SUM(HoursWorked) AS SumOfHoursWorked
FROM EMPLOYEE, SERVICE, OWNER
WHERE EMPLOYEE.EmployeeID = SERVICE.EmployeeID
AND EMPLOYEE.ExperienceLevel <> 'Junior'
AND (SELECT COUNT(ExperienceLevel) > 2)
最佳答案
select 语句中的所有表之间都需要有联接条件,并且您仅限定员工和服务之间的联接。
除了
where employee.employeeid = service.employeeid
添加
and service.propertyid = property.propertyId
and property.ownerid = owner.ownerid
正如 Mihai 的评论所建议的
and employee.experiencelevel in (select experiencelevel from employee having count(*) > 2)
最后,如果对值进行分组,求和效果会更好。
group by ownertype;
关于mySQL 排除计数列(如果低于),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393792/