我只是好奇心,为什么我不能在下面的练习中使用更多的东西
用SQL编写查询以显示管理4名或以上员工的经理的全名(姓和名)
下面是我的子查询的正确代码(使用count)
SELECT e.first_name , e.last_name ,e.department_id
FROM employees e
WHERE e.employee_id IN
(SELECT e.manager_id
FROM employees e
GROUP BY e.manager_id
HAVING COUNT(*)>=4);
此代码返回15行
错误代码大于
SELECT e.first_name , e.last_name ,e.department_id
FROM employees e
WHERE e.employee_id IN
(SELECT e.manager_id
FROM employees e where e.manager_id>=4);
此代码返回18行
答案 0 :(得分:0)
where子句将返回所有具有manager_id> 4的管理器。 而Haveing子句将返回总数或大于4的计数
答案 1 :(得分:0)
您查询以获取所需的输出不正确。 在where子句中,您正在检查是否大于等于4的管理员ID而不是count。
对于您的OP来说,这是我能清楚理解的解决方案之一
SELECT E.FIRST_NAME, E.LAST_NAME,E.DEPARTMENT_ID
FROM EMPLOYEES E
WHERE E.EMPLOYEE_ID IN(
SELECT MANAGER_ID FROM
(
SELECT M.MANAGER_ID,COUNT(*) CNT FROM EMPLOYEE M
GROUP BY M.MANAGER_ID
)
WHERE CNT >= 4
)