Saltar al contenido

HAVING

SQL · Unidad 6: Agrupar

¿Qué cursos necesitan clases de refuerzo? En la escuela las reciben los que promedian menos de 7.5, y cada fila de notas es la nota de un estudiante en un curso.

En la unidad pasada, un AVG dentro de un WHERE dio misuse of aggregate, porque el WHERE mira filas sueltas, antes de que existan los grupos. HAVING es el filtro que corre después. Va tras el GROUP BY, y su condición se prueba una vez por grupo.

SELECT curso_id,
  ROUND(AVG(nota), 2) AS promedio
FROM notas
GROUP BY curso_id
HAVING AVG(nota) < 7.5;

Devuelve

curso_idpromedio
16.9
37

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Completa el código

    ¿Qué estudiantes llevan tres cursos? Cada fila de notas es un estudiante en un curso. Completa con la palabra que filtra los grupos.

  2. 2. Predice la salida

    Se aprueba con 6. La nota más baja de cada estudiante es 7 para el 1, 6 para el 2, 5.5 para el 3, 7 para el 4, 7.5 para el 5 y 4 para el 6. ¿Qué devuelve esta consulta?

  3. 3. Ordena las líneas

    ¿Qué cursos tienen 3 inscritos o más? Ordena la consulta que los lista del más lleno al menos lleno. Sobra una línea.

  4. 4. Opción múltiple

    Las mismas seis notas de 8 o más, repartidas de otra forma. ¿Qué contesta esta consulta?

  5. 5. Predice la salida

    Los estudiantes 3 y 5 llevan tres cursos cada uno. El 5 los aprobó todos, y el 3 reprobó uno, con 5.5. ¿Qué devuelve esta consulta?

  6. 6. Encuentra el bug

    El cuadro de honor lista a quien tiene alguna nota de 9 o más, con cuántos cursos lleva. Hugo, el estudiante 3, sacó un 10 en Música, y aquí no aparece. ¿Qué línea tiene el problema?

  7. 7. Ordena las líneas

    La tabla cursos dice quién da cada curso y cuántos créditos vale. ¿Qué profesores dan al menos dos cursos que valgan 2 créditos o más? Ordena la consulta. Sobra una línea.

  8. 8. Encuentra el caso que falla

    Esta consulta debería listar los cursos donde aprobaron tres estudiantes o más. Se aprueba con 6. Hoy tienen tres aprobados Matemáticas, Historia y Ciencias, que son los cursos 1, 2 y 3. Música, el 4, tiene dos inscritos. Quien la escribió puso las dos condiciones en el HAVING. ¿Con cuál de estos datos lista un curso que no debería?

  9. 9. Opción múltiple

    Para dejar fuera a Música, que es el curso 4, de un resumen por curso, sirven las dos formas. WHERE curso_id <> 4 antes de agrupar o HAVING curso_id <> 4 después. Dan el mismo resultado. ¿Cuál escribe alguien con oficio?

  10. 10. Escribe el código

    Rosa da dos cursos, Matemáticas, que es el 1, y Ciencias, que es el 3. ¿Qué estudiantes llevan los dos? Escribe una consulta con una sola columna, el estudiante_id. Una pista. Quédate primero con las filas de esos dos cursos, y después mira cuántas tiene cada estudiante.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →