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.

#database#basic-joins

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;

slackmart blog © 2024