HAVING
SQL · Unidad 6: Agrupar
- Plan completo
- SQL
- 10 ejercicios
¿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_id | promedio |
|---|---|
| 1 | 6.9 |
| 3 | 7 |
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. Completa el código
¿Qué estudiantes llevan tres cursos? Cada fila de
notases un estudiante en un curso. Completa con la palabra que filtra los grupos.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. 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. Opción múltiple
Las mismas seis notas de 8 o más, repartidas de otra forma. ¿Qué contesta esta consulta?
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. 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. Ordena las líneas
La tabla
cursosdice 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. 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. 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 <> 4antes de agrupar oHAVING curso_id <> 4después. Dan el mismo resultado. ¿Cuál escribe alguien con oficio?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.
Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.