J'essaie de sélectionner l'ID de l'employé, le nom, la date d'embauche, etc. des superviseurs et le nombre total d'employés directement supervisés par chacun d'eux. Et n'affichez que les enregistrements qui ont supervisé 8 employés ou plus.

Voici ce que j'ai utilisé pour obtenir le résultat ci-dessous

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
TryPenta 3 nov. 2019 à 18:43

2 réponses

Meilleure réponse

Joignez le tableau à une requête qui renvoie les ID de superviseur et le nombre d'employés supervisés par chacun d'eux:

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 
0
forpas 3 nov. 2019 à 15:53

Pour répertorier les employés qui ont un superviseur qui compte plus de 8 employés:

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);

Pour répertorier le superviseur qui compte plus de 8 employés:

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; 
0
Luuk 3 nov. 2019 à 17:29