EjercicioResuelto - NBA
EjercicioResuelto - NBA
EjercicioResuelto - NBA
Dado el siguiente modelo relacional, se pide:
EQUIPOS ( NOMBRE, CIUDAD, CONFERENCIA, DIVISION)
JUGADORES ( CODIGO, NOMBRE, PROCEDENCIA, ALTURA, PESO, POSICION,
NOMBRE_EQUIPO)
PARTIDOS ( CODIGO, EQUIPO_LOCAL, EQUIPO_VISITANTE, PUNTOS_LOCAL,
PUNTOS_VISITANTE, TEMPORADA)
ESTADISTICAS ( TEMPORADA, JUGADOR, PUNTOS_POR_PARTIDO,
ASISTENCIA_POR_PARTIDO, TAPONES_POR_PARTIDO, REBOTES_POR_PARTIDO)
Nota: Las claves foráneas en los modelos relacionales presentes en este documento se representan en
cursiva y negrita.
SELECT NOMBRE
FROM JUGADORES
ORDER BY NOMBRE;
2. Mostrar el nombre de los jugadores cuya posición contenga la letra C y con más de 200
libras de peso, ordenados alfabéticamente.
SELECT NOMBRE
FROM JUGADORES
WHERE POSICION LIKE '%C%'
AND PESO > 200 ORDER BY NOMBRE;
3. Mostrar el nombre de todos los equipos ordenados alfabéticamente.
SELECT NOMBRE
FROM EQUIPOS
ORDER BY NOMBRE;
4. Mostrar el nombre de los equipos cuya conferencia sea este, ordenado por nombre.
SELECT NOMBRE
FROM EQUIPOS
WHERE CONFERENCIA = 'ESTE'
ORDER BY NOMBRE;
112
5. Mostrar los equipos donde su ciudad empieza por C, ordenado por nombre.
SELECT NOMBRE
FROM EQUIPOS
WHERE CIUDAD LIKE 'C%'
ORDER BY NOMBRE;
6. Mostrar todos los jugadores y su equipo ordenado por nombre del equipo.
SELECT J.NOMBRE
FROM JUGADORES J
WHERE J.NOMBRE_EQUIPO = 'RAPTORS'
ORDER BY J.NOMBRE;
SELECT E.PUNTOS_POR_PARTIDO
FROM ESTADISTICAS E, JUGADORES J
WHERE E.JUGADOR = J.CODIGO
AND J.NOMBRE = 'LUIS RUIZ';
SELECT E.PUNTOS_POR_PARTIDO
FROM ESTADISTICAS E, JUGADORES J
WHERE E.JUGADOR = J.CODIGO
AND J.NOMBRE = 'RIU MORALES'
AND TEMPORADA = '04/05';
10. Mostrar el total de puntos de cada jugador en toda su carrera, ordenado por nombre del
jugador.
113
11. Mostrar el número de jugadores de cada equipo.
SELECT T.NOMBRE
FROM ( SELECT J.NOMBRE, SUM(E.PUNTOS_POR_PARTIDOS) 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_PARTIDOS) AS PUNTOS
FROM JUGADORES J, ESTADISTICAS E
WHERE J.CODIGO = E.JUGADOR
GROUP BY J.NOMBRE) T2);
13. Mostrar el nombre del equipo, conferencia y división del jugador más alto de la NBA.
14. Mostrar la suma de los puntos por partido de todos los jugadores venezolanos que
juegan en equipos de la ciudad de ‘Los Ángeles’.
114
15. Mostrar la media de puntos en partidos de los equipos de la división Pacific.
SELECT AVG(PUNTOS)
FROM (SELECT SUM(PUNTOS_LOCAL) AS PUNTOS
FROM PARTIDOS
WHERE EQUIPO_LOCAL IN (SELECT NOMBRE
FROM EQUIPOS
WHERE DIVISION = 'PACIFIC')
UNION
SELECT SUM(PUNTOS_VISITANTE) AS PUNTOS
FROM PARTIDOS
WHERE EQUIPO_VISITANTE IN (SELECT NOMBRE
FROM EQUIPOS
WHERE DIVISION = 'PACIFIC')) T;
16. Mostrar el partido o partidos (equipo local, equipo visitante y diferencia) con mayor
diferencia de puntos.
17. Mostrar los puntos de cada equipo en los partidos, tanto de local como de visitante. Crear
una vista.
115
18. Mostrar quien gana en cada partido (código, equipo local, equipo visitante, equipo
ganador), en caso de empate será null. Crear una vista.
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 < P.PUNTOS_VISITANTE THEN EQUIPO_VISIT
ELSE NULL END AS EQUIPO_GANADOR
FROM PARTIDOS P;
116