Bases de Datos II

3º2ª DS

Clase 5: Solución a los ejercicios anteriores

27/04/2021 — Juanse Marquez

Les dejo la solución a los ejercicios de la semana pasada.


Mis conclusiones de estos ejercicios:

  • La mayoría de los estudiantes recuerdan bien las sentencias SQL básicas (INSERT, UPDATE, DELETE y SELECT con WHERE y ORDER BY).
  • La mayoría de los estudiantes recuerdan bien las funciones de agregación (SUM, AVG, COUNT, MAX, MIN), con GROUP BY, aunque se observan algunas dificultades a la hora de aplicar este conocimiento a ejercicios específicos.
  • Muy pocos estudiantes habían visto las consultas SELECT con JOIN.

Por favor, corríjanme si estoy equivocado. Este es el punto de partida sobre el cual comenzaremos a acompañar la construcción de nuevos conocimientos en 3er año.

Ahora sí, les completo las soluciones a los ejercicios anteriores. Los ejercicios 1 a 20 fueron resueltos la clase anterior. Les dejo a continuación la solución a los últimos ejercicios.

/*21: Listado de ciclistas, incluyendo nombre, edad,
equipo y director de equipo.*/
SELECT nombre, edad, ciclistas.equipo, director
FROM ciclistas
JOIN equipos ON ciclistas.equipo=equipos.nombre_equipo;

/*22: Repetir la consulta anterior, pero ordenarlos
alfabéticamente por equipo, y dentro de cada equipo,
ordenarlos por edad de mayor a menor*/
SELECT nombre, edad, equipo, director
FROM ciclistas
JOIN equipos ON equipo=nombre_equipo
ORDER BY equipo, edad DESC;

/*23: Listado de todas las etapas corridas, con número de etapa,
salida, llegada, nombre del ganador, y edad del ganador, ordenado
por este último dato de mayor a menor.*/
SELECT numero_etapa, salida, llegada, nombre, edad
FROM etapas
JOIN ciclistas ON ganador=numero
ORDER BY edad DESC;

/*24: Rehacer la consulta anterior, pero agregando ahora
las etapas que no se corrieron*/
SELECT numero_etapa, salida, llegada, ganador, edad
FROM etapas
LEFT JOIN ciclistas ON ganador=numero
ORDER BY edad DESC;

/*25: ¿Qué edad tiene el ganador más joven?*/
/*Con alias de columna*/
SELECT MIN(edad) as "Edad del más joven"
FROM etapas
JOIN ciclistas on numero=ganador;

/*26: ¿Cómo se llama y a qué equipo pertenece el ganador de la etapa 11?*/
SELECT nombre, equipo
FROM etapas
JOIN ciclistas on ganador=numero
WHERE numero_etapa=11;

Etiquetas: soluciones, clases