Hola a todos, hoy os dejo una serie de ejercicios sobre la base de datos de nba en oracle.
Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.
Aquí te dejo la base de datos de nba que debes importar.
Si no tienes instalado oracle database XE, os dejo algunos manuales:
También puedes usar Oracle Live.
Al final de cada ejercicio, os indico el resultado esperado de la consulta. Si hay muchos datos, indico el numero de filas.
Os dejo el modelo Entidad – Relación de la base de datos:

1. Mostrar el nombre de todos los jugadores ordenados alfabéticamente.
|
1 2 3 |
select nombre from jugadores order by nombre; |
Debe devolver 432 registros.
2. Mostrar el nombre de los jugadores que sean pivots con mas de 200 libras
|
1 2 3 4 |
select nombre from jugadores where posicion like '%C%' and peso>200 order by nombre; |
Debe devolver 116 registros.
3. Mostrar el nombre de todos los equipos ordenados alfabeticamente.
|
1 2 3 |
select nombre from equipos order by nombre; |

4. Mostrar el nombre de los equipos del este.
|
1 2 3 4 |
select nombre from equipos where lower(conferencia) = 'east' order by nombre; |

5. Mostrar los equipos donde su ciudad empieza por c.
|
1 2 3 4 |
select nombre from equipos where lower(ciudad) like 'c%' order by nombre; |

6. Mostrar todos los jugadores y su equipo ordenado por nombre del equipo.
|
1 2 3 4 5 6 7 8 9 10 |
--opcion 1 select j.nombre as jugador, e.nombre as equipo from jugadores j, equipos e where j.nombre_equipo = e.nombre order by e.nombre, j.nombre; --opcion 2 select j.nombre, j.nombre_equipo from jugadores j order by j.nombre_equipo,j.nombre; |
Debe devolver 432 registros.
7. Mostrar todos los jugadores del equipo «Raptors».
|
1 2 3 4 5 6 7 8 9 10 11 12 |
--Opcion 1 select j.nombre as jugador, e.nombre as equipo from jugadores j, equipos e where j.nombre_equipo = e.nombre and lower(e.nombre) = 'raptors' order by e.nombre, j.nombre; --Opcion 2 select j.nombre, j.nombre_equipo from jugadores j where lower(j.nombre_equipo) = 'raptors' order by j.nombre_equipo,j.nombre; |

8. Mostrar los puntos por partido de ‘Pau Gasol’.
|
1 2 3 4 |
select puntos_por_partido from estadisticas e, jugadores j where e.jugador = j.codigo and lower(j.nombre) = 'pau gasol' |

9. Mostrar los puntos por partido de ‘Pau Gasol’ en la temporada ’04/05′.
|
1 2 3 4 5 |
select puntos_por_partido from estadisticas e, jugadores j where e.jugador = j.codigo and lower(j.nombre) = 'pau gasol' and temporada = '04/05' |
![]()
10. Mostrar el numero de puntos de cada jugador en toda su carrera.
|
1 2 3 4 5 |
select j.nombre, sum(e.puntos_por_partido) as puntos from jugadores j, estadisticas e where j.CODIGO = e.jugador group by j.nombre order by j.nombre; |
11. Mostrar el número de jugadores de cada equipo.
|
1 2 3 4 5 6 7 8 9 10 |
--opcion 1 select j.nombre_equipo, count(*) from jugadores j group by j.nombre_equipo; --opcion 2 select e.nombre, count(*) from jugadores j, equipos e where j.nombre_equipo = e.nombre group by e.nombre; |

12. Mostrar el jugador que mas puntos ha realizado en toda su carrera.
|
1 2 3 4 5 6 7 8 9 10 11 |
select t.nombre from ( select j.nombre, sum(e.puntos_por_partido) as puntos from jugadores j, estadisticas e where j.codigo = e.jugador group by j.nombre order by j.nombre) t where t.puntos = (select max(t2.puntos) from (select j.nombre, sum(e.puntos_por_partido) as puntos from jugadores j, estadisticas e where j.codigo = e.jugador group by j.nombre order by j.nombre) t2) |

13. Mostrar el nombre del equipo, conferencia y division del jugador mas alto de la NBA.
|
1 2 3 4 5 |
select j.nombre as jugador, e.nombre as equipo, e.conferencia, e.division from equipos e, jugadores j where e.nombre = j.nombre_equipo and j.altura=(select max(altura) from jugadores) |

14. Mostrar la suma de los puntos por partido de todos los jugadores españoles donde el equipo donde juegan este en ‘Los Angeles’.
|
1 2 3 4 5 6 7 8 |
select sum(puntos_por_partido) as puntos from estadisticas where jugador = (select codigo from jugadores where lower(procedencia) = 'spain' and nombre_equipo in (select nombre from equipos where lower(ciudad) = 'los angeles')) |

15. Mostrar la media de puntos en partidos de los equipos de la division Pacific.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
select avg(puntos) from (select sum(puntos_local) as puntos from PARTIDOS where equipo_local in (select nombre from equipos where lower(DIVISION) = 'pacific') union select sum(puntos_visitante) as puntos from PARTIDOS where equipo_visitante in (select nombre from equipos where lower(DIVISION) = 'pacific')) t |
![]()
16. Mostrar el partido o partidos (equipo_local, equipo_visitante y diferencia) con mayor diferencia de puntos.
|
1 2 3 4 5 6 7 |
select equipo_local, equipo_visitante, diferencia from (select equipo_local, equipo_visitante, abs(puntos_local - puntos_visitante) as diferencia from partidos) where diferencia = (select max(abs(puntos_local - puntos_visitante)) from partidos) |

17. Mostrar la media de puntos en partidos de los equipos de la división Pacific.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
create or replace view DIFERENCIA_PUNTOS as select equipo_local, equipo_visitante, abs(puntos_local - puntos_visitante) as diferencia from partidos order by diferencia DESC; select equipo_local, equipo_visitante, diferencia from DIFERENCIA_PUNTOS where diferencia = (select max(diferencia) from DIFERENCIA_PUNTOS) |

18. Mostrar los puntos de cada equipo en los partidos, tanto de local como de visitante. Usa una vista
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
create or replace view Puntos_equipo_partidos as select t.equipo, sum(t.puntos) as puntos from (select equipo_local as equipo, sum(puntos_local) as puntos from partidos group by equipo_local union all select equipo_visitante as equipo, sum(puntos_visitante) as puntos from partidos group by equipo_visitante ) t group by t.equipo; select * from Puntos_equipo_partidos; |

19. Mostrar quien gana en cada partido (codigo, equipo_local, equipo_visitante, equipo_ganador), en caso de empate sera null.
|
1 |
|
1 |
create or replace view Equipos_ganadores as select codigo, equipo_local, equipo_visitante, case when p.puntos_local>p.puntos_visitante then equipo_local when p.puntos_local |
Debe devolver 15660 registros.
Os dejo videos de nuestro canal de youtube, donde realizamos estas consultas:
Espero que os sea de ayuda. Si tenéis cualquier duda, no dudes en preguntar. Estamos para ayudarte.
Muchas gracias, fue de gran ayuda
Si por ejemplo yo necesitara este dato a consultar *Consultar la información de los equipos que tienen más cantidad de puntos anotados como local o visitante* ¿como seria la sentencia?
Alguien puede echarme una mano en este ejercicio
Haz un procedimiento que, dada una temporada y un equipo (ambos pasados como
parámetros de entrada) diga:
Cuántos partidos en total ha ganado ese equipo como local
Para cada partido: Decir cuántos puntos anotó.
17. Mostrar la media de puntos en partidos de los equipos de la división Pacific. el procedimiento no concuerda con la pregunta y el resultado tampoco los equipos de la division ‘Pacific’ son 5.