Nuestro conjunto de datos consta de dos tablas.
La tabla distribution_companies enumera las empresas distribuidoras de películas con las siguientes columnas:
id - ID de la empresa distribuidora. Es la clave principal de la tabla.
company_name - El nombre de la empresa distribuidora.
La tabla se muestra a continuación.
id company_name
1 Columbia Pictures
2 Paramount Pictures
3 Warner Bros. Pictures
4 United Artists
5 Universal Pictures
6 New Line Cinema
7 Miramax Films
8 Produzioni Europee Associate
9 Buena Vista
10 StudioCanal
La segunda tabla es movies . Estas son las columnas:
id - El ID de la película. Esta es la clave principal de la tabla.
movie_title - El título de la película.
imdb_rating - La calificación de la película en IMDb.
year_released - El año de estreno de la película.
budget - El presupuesto de la película en millones de dólares.
box_office - Los ingresos de la película en millones de dólares.
distribution_company_id - El ID de la empresa distribuidora, con referencia a la tabla distribution_companies (clave externa).
language - El idioma o idiomas hablados en la película.
La tabla se muestra a continuación.
id movie_title imdb_rating year_released budget box_office distribution_company_id language
The
1 Shawshank 9.2 1994 25.00 73.30 1 English
Redemption
The
2 9.2 1972 7.20 291.00 2 English
Godfather
The Dark
3 9.0 2008 185.00 1,006.00 3 English
Knight
The
English,
4 Godfather 9.0 1974 13.00 93.00 2
Sicilian
Part II
12 Angry
5 9.0 1957 0.34 2.00 4 English
Men
English,
Schindler's
6 8.9 1993 22.00 322.20 5 German,
List
Yiddish
The Lord of
the Rings:
7 8.9 2003 94.00 1,146.00 6 English
The Return
of the King
8 Pulp Fiction 8.8 1994 8.50 213.90 7 English
The Lord of
the Rings:
9 The 8.8 2001 93.00 898.20 6 English
Fellowship
of the Ring
The Good, English,
10 the Bad and 8.8 1966 1.20 38.90 8 Italian,
the Ugly Spanish
Ejercicio 1: Seleccionar todas las columnas de una tabla
Ejercicio: Seleccionar todos los datos de la tabla distribution_companies .
Solución:
SELECT *
FROM distribution_companies;
Explicación de la solución: Seleccione los datos utilizando la sentencia SELECT . Para seleccionar todas las columnas, utilice un asterisco ( * ). La tabla de la que se
seleccionan los datos se especifica en la cláusula FROM .
Salida de la solución:
id company_name
1 Columbia Pictures
2 Paramount Pictures
3 Warner Bros. Pictures
4 United Artists
5 Universal Pictures
6 New Line Cinema
7 Miramax Films
8 Produzioni Europee Associate
9 Buena Vista
10 StudioCanal
Ejercicio 2: Selección de algunas columnas de una tabla
Ejercicio: Para cada película, seleccione el título, la calificación IMDb y el año de estreno.
Solución:
SELECT
movie_title,
imdb_rating,
year_released
FROM movies;
Explicación de la solución: Enumere todas las columnas necesarias ( movie_title , imdb_rating ,y year_released ) en la sentencia SELECT , separadas por una coma.
Haga referencia a la tabla movies en la cláusula FROM .
Salida de la solución:
movie_title imdb_rating year_released
The Shawshank Redemption 9.2 1994
The Godfather 9.2 1972
The Dark Knight 9.0 2008
The Godfather Part II 9.0 1974
12 Angry Men 9.0 1957
Schindler's List 8.9 1993
The Lord of the Rings: The Return of the King 8.9 2003
Pulp Fiction 8.8 1994
The Lord of the Rings: The Fellowship of the Ring 8.8 2001
The Good, the Bad and the Ugly 8.8 1966
Ejercicio 3: Selección de unas pocas columnas y filtrado de
datos numéricos en WHERE
Ejercicio: Seleccione las columnas movie_title y box_office de la tabla movies . Mostrar sólo las películas con ganancias superiores a 300 millones de dólares.
Solución:
SELECT
movie_title,
box_office
FROM movies
WHERE box_office > 300;
Explicación de la solución: Escriba las columnas en SELECT y haga referencia a la tabla en FROM . Utilice una cláusula WHERE para filtrar los datos - escriba la
columna box_office y utilice el operador "mayor que" ( > ) para mostrar sólo los valores superiores a 300 millones de dólares.
Salida de la solución:
movie_title box_office
The Dark Knight 1,006.00
Schindler's List 322.20
The Lord of the Rings: The Return of the King 1,146.00
The Lord of the Rings: The Fellowship of the Ring 898.20
Ejercicio 4: Selección de unas pocas columnas y filtrado de
datos de texto en WHERE
Ejercicio: Seleccione las columnas movie_title , imdb_rating ,y year_released de la tabla movies . Mostrar las películas que tienen la palabra 'El Padrino' en el título.
Solución:
SELECT
movie_title,
imdb_rating,
year_released
FROM movies
WHERE movie_title LIKE '%Godfather%';
Explicación de la solución: Enumere las columnas en SELECT y haga referencia a la tabla en la cláusula FROM . Utilice una cláusula WHERE para filtrar los datos.
Después de escribir el nombre de la columna, utiliza el operador lógico LIKE para buscar 'Padrino' en el título de la película, escrito entre comillas simples. Para buscar la
palabra en cualquier lugar del título de la película, coloque el carácter comodín ( % ) antes y después de la palabra.
Salida de la solución:
movie_title imdb_rating year_released
The Godfather 9.2 1972
The Godfather Part II 9.0 1974
Ejercicio 5: Selección de unas pocas columnas y filtrado de
datos mediante dos condiciones en WHERE
Ejercicio: Seleccione las columnas movie_title , imdb_rating ,y year_released de la tabla movies . Mostrar las películas que se estrenaron antes de 2001 y tuvieron
una calificación superior a 9.
Solución:
SELECT
movie_title,
imdb_rating,
year_released
FROM movies
WHERE year_released < 2001 AND imdb_rating > 9;
Explicación de la solución: Listar las columnas en SELECT y referenciar la tabla en FROM . Establezca como primera condición que el año de estreno sea anterior a 2001
utilizando el operador "menor que" ( < ). Para añadir otra condición, utilice el operador lógico AND . Usa la misma lógica que la primera condición, esta vez usando el
operador 'mayor que' con la columna imdb_rating .
Salida de la solución:
movie_title imdb_rating year_released
The Shawshank Redemption 9.2 1994
The Godfather 9.2 1972
Ejercicio 6: Filtrado de datos mediante WHERE y ordenación de
la salida
Ejercicio: Seleccione las columnas movie_title , imdb_rating ,y year_released de la tabla movies . Muestra las películas estrenadas después de 1991. Ordene la
salida por el año de estreno en orden ascendente.
Solución:
SELECT
movie_title,
imdb_rating,
year_released
FROM movies
WHERE year_released > 1991
ORDER BY year_released ASC;
Explicación de la solución: Enumerar las columnas en SELECT y referenciar la tabla en FROM . Filtre los datos con WHERE aplicando el operador "mayor que" a la
columna year_released . Para ordenar los datos, utilice una cláusula ORDER BY y escriba el nombre de la columna por la que desea ordenar. El tipo de ordenación se
especifica escribiendo ASC (ascendente) o DESC (descendente). Si se omite el tipo, la salida se ordena por defecto en orden ascendente.
Salida de la solución:
movie_title imdb_rating year_released
Schindler's List 8.9 1993
The Shawshank Redemption 9.2 1994
Pulp Fiction 8.8 1994
The Lord of the Rings: The Fellowship of the Ring 8.8 2001
The Lord of the Rings: The Return of the King 8.9 2003
The Dark Knight 9.0 2008
Ejercicio 7: Agrupación de datos por una columna
Ejercicio: Mostrar el recuento de películas por cada categoría de idioma.
Solución:
SELECT
language,
COUNT(*) AS number_of_movies
FROM movies
GROUP BY language;
Explicación de la solución: Seleccione la columna language de la tabla movies . Para contar el número de películas, utilice la función agregada COUNT() . Utilice el
asterisco ( * ) para contar las filas, lo que equivale al recuento de películas. Para dar un nombre a esta columna, utilice la palabra clave AS seguida del nombre deseado.
Para mostrar el recuento por idioma, necesita agrupar los datos por él, así que escriba la columna language en la cláusula GROUP BY .
Salida de la solución:
language number_of_movies
English 7
English, German, Yiddish 1
English, Sicilian 1
English, Italian, Spanish 1
Ejercicio 8: Agrupación de Datos por Varias Columnas
Ejercicio: Mostrar el conteo de películas por año de estreno e idioma. Ordenar los resultados por la fecha de estreno en orden ascendente.
Solución:
SELECT
year_released,
language,
COUNT(*) AS number_of_movies
FROM movies
GROUP BY year_released, language
ORDER BY year_released ASC;
Explicación de la solución: Enumerar las columnas year_released y language de la tabla movies en SELECT . Utilice COUNT(*) para contar el número de películas y
asigne un nombre a esta columna utilizando la palabra clave AS . Especifique las columnas por las que desea agrupar en la cláusula GROUP BY . Separe cada nombre de
columna con una coma. Ordene la salida utilizando ORDER BY con la columna year_released y la palabra clave ASC .
Salida de la solución:
year_released language number_of_movies
1957 English 1
1966 English, Italian, Spanish 1
1972 English 1
1974 English, Sicilian 1
1993 English, German, Yiddish 1
1994 English 2
2001 English 1
2003 English 1
2008 English 1
Ejercicio 9: Filtrado de Datos Después de Agrupar
Ejercicio: Mostrar los idiomas hablados y el presupuesto medio de las películas por categoría de idioma. Mostrar sólo los idiomas con un presupuesto medio superior a 50
millones de dólares.
Solución:
SELECT
language,
AVG(budget) AS movie_budget
FROM movies
GROUP BY language
HAVING AVG(budget) > 50;
Explicación de la solución: Seleccione la columna language de la tabla movies . Para calcular el presupuesto medio, utilice la función de agregado AVG() con la
columna presupuesto entre paréntesis. Nombre la columna en la salida utilizando la palabra clave AS . Agrupe los datos por clasificación utilizando GROUP BY . Para filtrar
los datos después de agruparlos, utilice una cláusula HAVING . En ella, utilice la misma construcción AVG() que en SELECT y establezca que los valores sean superiores a
50 utilizando el operador "mayor que".
Salida de la solución:
language movie_budget
English 59.01
Ejercicio 10: Selección de Columnas de Dos Tablas
Ejercicio: Mostrar títulos de películas de la tabla movies , cada uno con el nombre de su distribuidora.
Solución:
SELECT
movie_title,
company_name
FROM distribution_companies dc
JOIN movies m
ON [Link] = m.distribution_company_id;
Explicación de la solución: Enumerar las columnas movie_title y company_name en SELECT . En la cláusula FROM , hacer referencia a la tabla distribution_companies .
Dele un alias dc para acortar su nombre y poder utilizarlo más adelante. La palabra clave AS se omite aquí; puede utilizarla si lo desea. Para acceder a los datos de la otra
tabla, utilice JOIN (también puede escribirse como INNER JOIN ) y escriba el nombre de la tabla a continuación. Asigne también un alias a esta tabla. La unión utilizada
aquí es una unión de tipo interno; sólo devuelve las filas que cumplen la condición de unión especificada en la cláusula ON . Las tablas se unen cuando la columna id de
la tabla distribution_companies es igual a la columna distribution_company_id de la tabla movies . Para especificar qué columna procede de qué tabla, utilice el alias
correspondiente de cada tabla.
Salida de la solución:
movie_title company_name
The Shawshank Redemption Columbia Pictures
The Godfather Part II Paramount Pictures
The Godfather Paramount Pictures
The Dark Knight Warner Bros. Pictures
12 Angry Men United Artists
Schindler's List Universal Pictures
The Lord of the Rings: The Fellowship of the Ring New Line Cinema
The Lord of the Rings: The Return of the King New Line Cinema
Pulp Fiction Miramax Films
The Good, the Bad and the Ugly Produzioni Europee Associate