![](/img/trans.png)
[英]In MySQL how do I count fields on a table by value in an inner join, then left join those results to a SELECT?
[英]How do I count the results of a select in SQL
我被分配了以下问题
编写 SQL 语句以显示每种所有者类型的工作时间总和,但不包括经验级别为初级的员工的服务,并排除任何少于四名成员的所有者类型
我很难弄清楚如何完成问题的最后一部分。 我相信这需要计算 select 语句的一部分,但我不知道该怎么做。
到目前为止,这就是我所拥有的:
SELECT SUM(HoursWorked), OwnerType
FROM PROPERTY_SERVICE
JOIN EMPLOYEE ON EMPLOYEE.EmployeeID=PROPERTY_SERVICE.EmployeeID
JOIN OWNED_PROPERTY ON OWNED_PROPERTY.PropertyID = PROPERTY_SERVICE.PropertyID
INNER JOIN OWNER ON OWNER.OwnerID=OWNED_PROPERTY.OwnerID
WHERE NOT EMPLOYEE.ExperienceLevel='Junior'
*This is where I believe the solution should go*
GROUP BY OWNER.OwnerType;
据推测,您只需要一个HAVING
子句:
SELECT SUM(HoursWorked), o.OwnerType
FROM PROPERTY_SERVICE ps
JOIN EMPLOYEE e ON e.EmployeeID = ps.EmployeeID
JOIN OWNED_PROPERTY op ON op.PropertyID = ps.PropertyID
INNER JOIN OWNER o ON o.OwnerID = op.OwnerID
WHERE e.ExperienceLevel <> 'Junior'
GROUP BY o.OwnerType
HAVING COUNT(*) < 4
这不包括具有相同OwnerType
包含少于 4 行的行组。 您可能需要将表达式调整为您对member的确切定义。
请注意,我在查询中添加了表别名以使其更易于阅读和编写。 我还建议在列HoursWorked
之前为其所属的表添加前缀,以避免歧义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.