我什么时候可以使用计数或大于或小于

时间:2018-10-18 12:04:39

标签: sql oracle

我只是好奇心,为什么我不能在下面的练习中使用更多的东西

用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行

2 个答案:

答案 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
)