22nd May 2023 Lectura de 10 minutos 10 Ejercicios de Práctica SQL para Principiantes con Soluciones Tihomir Babic SQL aprender SQL ejercicio online Índice El conjunto de datos Ejercicio 1: Seleccionar todas las columnas de una tabla Ejercicio 2: Selección de algunas columnas de una tabla Ejercicio 3: Selección de unas pocas columnas y filtrado de datos numéricos en WHERE Ejercicio 4: Selección de unas pocas columnas y filtrado de datos de texto en WHERE Ejercicio 5: Selección de unas pocas columnas y filtrado de datos mediante dos condiciones en WHERE Ejercicio 6: Filtrado de datos mediante WHERE y ordenación de la salida Ejercicio 7: Agrupación de datos por una columna Ejercicio 8: Agrupación de Datos por Varias Columnas Ejercicio 9: Filtrado de Datos Después de Agrupar Ejercicio 10: Selección de Columnas de Dos Tablas ¡Ha sido divertido! Ahora, ¡es hora de hacer Ejercicio de SQL por tu cuenta! Resuelve estos diez problemas de práctica de SQL y comprueba tus conocimientos de SQL. Este artículo trata sobre la práctica de SQL. Es la mejor manera de aprender SQL. Te mostramos diez ejercicios de práctica de SQL en los que tendrás que aplicar conceptos esenciales de SQL. Si eres un novato en SQL, no te preocupes: estos ejemplos son para principiantes. Utilízalos como práctica o como forma de aprender nuevos conceptos SQL. Para más información teórica y (¡aún más!) ejercicios, está nuestro curso interactivo SQL para principiantes interactivo. En él aprenderás a seleccionar datos de una o varias tablas, a agregar y agrupar datos, a escribir subconsultas y a utilizar operaciones de conjunto. El curso consta de 129 ejercicios interactivos, por lo que no faltan oportunidades para practicar SQL, sobre todo si le añades algunas de las 12 formas de aprender SQL en línea. Hablando de práctica, ¡comencemos con nuestros ejercicios! El conjunto de datos La pregunta siempre es dónde encontrar datos para practicar SQL. Usaremos nuestro conjunto de datos para todos los ejercicios. Sin embargo, no es necesario que te limites a éste: puedes encontrar otros conjuntos de datos gratuitos en línea para practicar SQL. 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. idcompany_name 1Columbia Pictures 2Paramount Pictures 3Warner Bros. Pictures 4United Artists 5Universal Pictures 6New Line Cinema 7Miramax Films 8Produzioni Europee Associate 9Buena Vista 10StudioCanal 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. idmovie_titleimdb_ratingyear_releasedbudgetbox_officedistribution_company_idlanguage 1The Shawshank Redemption9.2199425.0073.301English 2The Godfather9.219727.20291.002English 3The Dark Knight9.02008185.001,006.003English 4The Godfather Part II9.0197413.0093.002English, Sicilian 512 Angry Men9.019570.342.004English 6Schindler's List8.9199322.00322.205English, German, Yiddish 7The Lord of the Rings: The Return of the King8.9200394.001,146.006English 8Pulp Fiction8.819948.50213.907English 9The Lord of the Rings: The Fellowship of the Ring8.8200193.00898.206English 10The Good, the Bad and the Ugly8.819661.2038.908English, Italian, 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: idcompany_name 1Columbia Pictures 2Paramount Pictures 3Warner Bros. Pictures 4United Artists 5Universal Pictures 6New Line Cinema 7Miramax Films 8Produzioni Europee Associate 9Buena Vista 10StudioCanal 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_titleimdb_ratingyear_released The Shawshank Redemption9.21994 The Godfather9.21972 The Dark Knight9.02008 The Godfather Part II9.01974 12 Angry Men9.01957 Schindler's List8.91993 The Lord of the Rings: The Return of the King8.92003 Pulp Fiction8.81994 The Lord of the Rings: The Fellowship of the Ring8.82001 The Good, the Bad and the Ugly8.81966 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_titlebox_office The Dark Knight1,006.00 Schindler's List322.20 The Lord of the Rings: The Return of the King1,146.00 The Lord of the Rings: The Fellowship of the Ring898.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_titleimdb_ratingyear_released The Godfather9.21972 The Godfather Part II9.01974 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_titleimdb_ratingyear_released The Shawshank Redemption9.21994 The Godfather9.21972 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_titleimdb_ratingyear_released Schindler's List8.91993 The Shawshank Redemption9.21994 Pulp Fiction8.81994 The Lord of the Rings: The Fellowship of the Ring8.82001 The Lord of the Rings: The Return of the King8.92003 The Dark Knight9.02008 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: languagenumber_of_movies English7 English, German, Yiddish1 English, Sicilian1 English, Italian, Spanish1 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_releasedlanguagenumber_of_movies 1957English1 1966English, Italian, Spanish1 1972English1 1974English, Sicilian1 1993English, German, Yiddish1 1994English2 2001English1 2003English1 2008English1 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: languagemovie_budget English59.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 dc.id = 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_titlecompany_name The Shawshank RedemptionColumbia Pictures The Godfather Part IIParamount Pictures The GodfatherParamount Pictures The Dark KnightWarner Bros. Pictures 12 Angry MenUnited Artists Schindler's ListUniversal Pictures The Lord of the Rings: The Fellowship of the RingNew Line Cinema The Lord of the Rings: The Return of the KingNew Line Cinema Pulp FictionMiramax Films The Good, the Bad and the UglyProduzioni Europee Associate ¡Ha sido divertido! Ahora, ¡es hora de hacer Ejercicio de SQL por tu cuenta! Estos diez ejercicios de práctica de SQL le dan una idea de cómo es la práctica de SQL. Ya sea que estés en el nivel principiante, intermedio o avanzado, es lo mismo. Lo que cambia es la complejidad de los problemas que resuelves y del código que escribes. Busca más retos en el SQL para principiantes curso y en la pista mensual Ejercicio de SQL. Ambos son excelentes para tu práctica de SQL online. Esto es cierto, especialmente si no tienes la oportunidad de utilizar SQL a diario en tu trabajo. Por lo tanto, ¡no intentes probar cuánto tardas en olvidar lo que antes sabías de SQL! Aprovecha cada oportunidad para resolver tantos problemas de práctica de SQL como sea posible. Tags: SQL aprender SQL ejercicio online