正确的方式来编写子查询MYSQL

时间:2015-06-06 07:02:09

标签: 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 SUM(a.hrs_w) >
                (SELECT (SUM(action.hrs_w) / COUNT(DISTINCT action.emp_id))
                    FROM action)
ORDER BY e.emp_id ASC;

我自己测试子查询并且它工作正常,它返回我之后的值。

当我将查询放在子查询的括号中时,我得到语法错误。

1 个答案:

答案 0 :(得分:0)

我的错误是当我应该使用HAVING

时使用WHERE
HAVING SUM(a.hrs_w) >
            (SELECT (SUM(action.hrs_w) / COUNT(DISTINCT action.emp_id))
                FROM action)