Nothing Special   »   [go: up one dir, main page]

EjercicioResuelto - NBA

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Ejercicio 19 - Juegos de la 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. 

1. Mostrar el nombre de todos los jugadores ordenados alfabéticamente. 

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, J.NOMBRE_EQUIPO


FROM JUGADORES J
ORDER BY J.NOMBRE_EQUIPO;
 
7. Mostrar todos los jugadores del equipo “Raptors” ordenado por nombre de jugador.

SELECT J.NOMBRE
FROM JUGADORES J
WHERE J.NOMBRE_EQUIPO = 'RAPTORS'
ORDER BY J.NOMBRE;

8. Mostrar los puntos por partido de ‘Luis Ruiz’. 

SELECT E.PUNTOS_POR_PARTIDO
FROM ESTADISTICAS E, JUGADORES J
WHERE E.JUGADOR = J.CODIGO
AND J.NOMBRE = 'LUIS RUIZ';

9. Mostrar los puntos por partido de ‘Riu Morales’ en la temporada ’04/05′.

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.

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;

113 
11. Mostrar el número de jugadores de cada equipo.

SELECT J.NOMBRE_EQUIPO, COUNT(*)


FROM JUGADORES J
GROUP BY J.NOMBRE_EQUIPO;

12. Mostrar el jugador que más puntos ha realizado en toda su carrera.

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.

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 venezolanos que 
juegan en equipos de la ciudad de ‘Los Ángeles’. 

SELECT SUM(PUNTOS_POR_PARTIDO) AS PUNTOS


FROM ESTADISTICAS
WHERE JUGADOR = (SELECT CODIGO
FROM JUGADORES
WHERE PROCEDENCIA = 'VENEZUELA'
AND NOMBRE_EQUIPO IN (SELECT NOMBRE
FROM EQUIPOS
WHERE CIUDAD = 'LOS ANGELES'));

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. 

SELECT EQUIPO_LOCAL, EQUIPO_VISITANTE, DIFERENCIA


FROM (SELECT EQUIPO_LOCAL,
EQUIPO_VISITANTE,
(PUNTOS_LOCAL - PUNTOS_VISITANTE) AS DIFERENCIA
FROM PARTIDOS)
WHERE DIFERENCIA = (SELECT MAX(PUNTOS_LOCAL - PUNTOS_VISITANTE)
FROM PARTIDOS);

17. Mostrar los puntos de cada equipo en los partidos, tanto de local como de visitante. Crear 
una vista.

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_EQUIPO_VISITANTE) AS PUNTOS
FROM PARTIDOS
GROUP BY EQUIPO_EQUIPO_VISITANTE)
GROUP BY T.EQUIPO;

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 

También podría gustarte