编写子查询MYSQL的正确方法
我试图列出那些总工作时间比所有员工的平均工作时间长的员工 我觉得我已经正确地设置了查询,但我唯一不确定的是如何编写子查询编写子查询MYSQL的正确方法,mysql,subquery,Mysql,Subquery,我试图列出那些总工作时间比所有员工的平均工作时间长的员工 我觉得我已经正确地设置了查询,但我唯一不确定的是如何编写子查询 SELECT e.emp_id 'Employee ID', e.emp_name 'Employee Name', SUM(a.hrs_w) 'Total Hours Worked' FROM employee e LEFT JOIN action a on e.emp_id = a.emp_id GROUP BY e.emp_id WHERE
SELECT
e.emp_id 'Employee ID',
e.emp_name 'Employee Name',
SUM(a.hrs_w) 'Total Hours Worked'
FROM employee e
LEFT JOIN action a
on e.emp_id = a.emp_id
GROUP BY e.emp_id
WHERE SUM(a.hrs_w) >
(SELECT (SUM(action.hrs_w) / COUNT(DISTINCT action.emp_id))
FROM action)
ORDER BY e.emp_id ASC;
我已经单独测试了子查询,它工作得很好,它返回我想要的值
就在我将查询放在子查询的括号内时,我得到了一个语法错误。我的错误是使用了WHERE,而我应该使用HAVING
HAVING SUM(a.hrs_w) >
(SELECT (SUM(action.hrs_w) / COUNT(DISTINCT action.emp_id))
FROM action)
你知道那种感觉,当你等待10分钟才能在overflow上再次发布时,当你发布时,你发现你使用了where而不是have,你觉得自己很愚蠢……**这就是我现在的感受**如果你认为你自己发现了这个问题,请把它作为公认的答案。