我正在尝试选择主管的员工ID,姓名,雇用日期等,以及每位主管直接监督的员工总数。并且仅显示那些监督了8位或更多员工的记录。
这就是我用来获取以下结果的方法
select supervisor_id, COUNT(supervisor_id)
FROM EMPLOYEE
GROUP BY supervisor_id
HAVING COUNT(supervisor_id) >= 8;
``` Result
+---------------+----------------------+
| supervisor_id | COUNT(supervisor_id) |
+---------------+----------------------+
| 100 | 14 |
| 120 | 8 |
| 121 | 8 |
| 122 | 8 |
| 123 | 8 |
| 124 | 8 |
+---------------+----------------------+
what I wanted to write was:
SELECT employee_id, first_name, last_name, hire_date, salary COUNT(supervisor_id)
FROM EMPLOYEE
GROUP BY supervisor_id,
HAVING COUNT(supervisor_id) >= 8;
答案 0 :(得分:0)
要列出拥有8名以上主管的主管的员工,
SELECT employee_id, first_name, last_name, hire_date, salary, supervisor_id
FROM EMPLOYEE
WHERE supervisor_id IN (
select supervisor_id
FROM EMPLOYEE
GROUP BY supervisor_id
HAVING COUNT(supervisor_id) >= 8);
要列出拥有8名以上员工的主管,请执行以下操作:
SELECT employee_id, first_name, last_name, hire_date, salary, supervisor_id
FROM EMPLOYEE
WHERE employee_id IN (
select supervisor_id
FROM EMPLOYEE
GROUP BY supervisor_id
HAVING COUNT(supervisor_id) >= 8);
HAVING COUNT(supervisor_id) >= 8;
答案 1 :(得分:0)
将表联接到一个查询中,该查询返回主管ID和每个主管的受监管雇员人数:
SELECT e.employee_id, e.first_name, e.last_name, e.hire_date, e.salary, s.counter
FROM employee e INNER JOIN (
SELECT supervisor_id, COUNT(*) counter
FROM employee
GROUP BY supervisor_id
HAVING COUNT(*) >= 8
) s on s.supervisor_id = e.employee_id