Gerentes con al menos 5 reportes directos
Escribe una solución para encontrar a los gerentes con al menos 5 reportes directos. Regresa el resultado en cualquier orden.
Tabla: Employee
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| name | varchar |
| department | varchar |
| managerId | int |
+-------------+---------+
- `id` es la llave primaria (columna con valores únicos) para esta tabla.
- Cada fila de esta tabla indica el nombre del empleado, su departamento, y el `id` de su gerente.
- Si el `managerId` es `null`, entonces el empleado no tiene un gerente asignado.
- Ningún empleado podrá ser gerente de si mismo.
El formato del resultado se muestra en el siguiente ejemplo.
Ejemplo 1:
Entrada:
Tabla Employee:
+-----+-------+------------+-----------+
| id | name | department | managerId |
+-----+-------+------------+-----------+
| 101 | John | A | null |
| 102 | Dan | A | 101 |
| 103 | James | A | 101 |
| 104 | Amy | A | 101 |
| 105 | Anne | A | 101 |
| 106 | Ron | B | 101 |
+-----+-------+------------+-----------+
Salida:
+------+
| name |
+------+
| John |
+------+
Solution:
WITH managers AS (
SELECT e.name,
count(e.id) AS num_reports
FROM employee e
JOIN employee e2 ON e2.managerId = e.id
GROUP BY e.id
)
SELECT name FROM managers where num_reports >= 5;