SELFISH es hacer un JOIN con la propia Tabla.
No necesito tener dos tablas para hacer JOINs, lo puedo hacer con una sola y generando una unión entre ella misma.
ALUMNOS QUE SON TUTORES DE OTROS ALUMNOS
SELECT a.nombre,
a.apellido,
t.nombre,
t.apellido
FROM platzi.alumnos AS a
INNER JOIN platzi.alumnos AS t ON a.tutor_id = t.id;
SELECT CONCAT(e.nombre, ' ', e.apellido) AS Estudiantes,
CONCAT(t.nombre, ' ', t.apellido) AS Tutor
FROM platzi.alumnos AS e
INNER JOIN platzi.alumnos AS t ON e.tutor_id = t.id;
INNER JOIN de la tabla alumnos consigo misma, pero estamos usando la segunda instancia de la tabla como si fuese una tabla de tutores.JOIN de una tabla consigo misma, debemos asignar un alias diferente a cada instancia de la tabla.

SELECT CONCAT(t.nombre, ' ', t.apellido) AS Tutor,
COUNT(*) AS Estudiantes_por_Tutor
FROM platzi.alumnos AS e
INNER JOIN platzi.alumnos AS t ON e.tutor_id = t.id
GROUP BY tutor
ORDER BY Estudiantes_por_Tutor DESC
LIMIT 10;
Sacar el promedio de Alumnos por Tutor.
SELECT AVG(alumnos_por_tutor) AS promedio_alumnos_por_tutor
FROM (
SELECT CONCAT(t.nombre, ' ', t.apellido) AS Tutor,
COUNT(*) AS alumnos_por_tutor
FROM platzi.alumnos AS a
INNER JOIN platzi.alumnos AS t ON a.tutor_id = t.id
GROUP BY tutor
) AS alumnos_tutor;
SELECT AVG(Estudiantes_por_tutor) AS Promedio_Estudiantes_Por_Tutor
FROM (
SELECT CONCAT(t.nombre, ' ', t.apellido) AS Tutor,
COUNT(*) AS Estudiantes_por_Tutor
FROM platzi.alumnos AS e
INNER JOIN platzi.alumnos AS t ON e.tutor_id = t.id
GROUP BY tutor
ORDER BY Estudiantes_por_Tutor DESC
) AS Tu_Es;
SELECT ROUND(AVG(conteo),1) AS prom_alumnos_por_tutor
FROM (
SELECT COUNT(DISTINCT id) AS conteo, tutor_id
FROM platzi.alumnos
GROUP BY tutor_id
) AS num_alumnos_por_tutor;