SELECT titulo FROM libros WHERE titulo LIKE ‘La%’ and titulo IN (SELECT titulo FROM libros WHERE titulo LIKE ‘%a’)
esta ok asi? hay otra manera mas facil?
Aquí un listado de ejercicios con los cuales puedes practicar a partir de los datos que se encuentran en el archivo sentencias.sql
Tu puedes agregar más datos (reales) si así tú lo deseas. Si aun no poses el archivo puedes descargarlo en el siguiente link
Libros
Obtener todos los libros escritos por autores que cuenten con un seudónimo.
Obtener el título de todos los libros publicados en el año actual cuyos autores poseen un pseudónimo.
Obtener todos los libros escritos por autores que cuenten con un seudónimo y que hayan nacido ante de 1965.
Colocar el mensaje no disponible a la columna descripción, en todos los libros publicados antes del año 2000.
Obtener la llave primaria de todos los libros cuya descripción sea diferente de no disponible.
Obtener el título de los últimos 3 libros escritos por el autor con id 2.
Obtener en un mismo resultado la cantidad de libros escritos por autores con seudónimo y sin seudónimo.
Ejemplo
con seudónimo sin seudónimo 10 20
Obtener la cantidad de libros publicados entre enero del año 2000 y enero del año 2005.
Obtener el título y el número de ventas de los cinco libros más vendidos.
- Obtener el título y el número de ventas de los cinco libros más vendidos de la última década.
- Obtener la cantidad de libros vendidos por los autores con id 1, 2 y 3.
Ejemplo
autor ventas 1 10 2 20 2 30
Obtener el título del libro con más páginas.
Obtener todos los libros cuyo título comience con la palabra “La”.
Obtener todos los libros cuyo título comience con la palabra “La” y termine con la letra “a”.
Establecer el stock en cero a todos los libros publicados antes del año de 1995
Mostrar el mensaje Disponible si el libro con id 1 posee más de 5 ejemplares en stock, en caso contrario mostrar el mensaje No disponible.
Obtener el título los libros ordenador por fecha de publicación del más reciente al más viejo.
Autores
Obtener el nombre de los autores cuya fecha de nacimiento sea posterior a 1950
Obtener la el nombre completo y la edad de todos los autores.
Obtener el nombre completo de todos los autores cuyo último libro publicado sea posterior al 2005
Obtener el id de todos los escritores cuyas ventas en sus libros superen el promedio.
Obtener el id de todos los escritores cuyas ventas en sus libros sean mayores a cien mil ejemplares.
Funciones
- Crear una función la cual nos permita saber si un libro es candidato a préstamo o no. Retornar “Disponible” si el libro posee por lo menos un ejemplar en stock, en caso contrario retornar “No disponible.”
-
check_circle_outlineMódulo 1 | 8 clases
Introdución
expand_more -
check_circle_outlineMódulo 2 | 3 clases
Servidor de base de datos
expand_more -
check_circle_outlineMódulo 3 | 10 clases
Base de datos y tablas
expand_more -
check_circle_outlineMódulo 4 | 8 clases
Restricciones
expand_more -
check_circle_outlineMódulo 5 | 2 clases
Modificar tablas
expand_more -
check_circle_outlineMódulo 6 | 12 clases
Sentencias basicas
expand_more -
check_circle_outlineMódulo 7 | 8 clases
Funciones
expand_more -
check_circle_outlineMódulo 8 | 12 clases
Sentencias avanzadas
expand_more-
done_all
Clase 1
Búsqueda mediante strings
-
done_all
Clase 2
Expresiones regulares
-
done_all
Clase 3
Ordenar registros
-
done_all
Clase 4
Limitar registros
-
done_all
Clase 5
¿Qué son las funciones de agreación?
-
done_all
Clase 6
Funciones de agregación
-
done_all
Clase 7
Agrupamiento
-
done_all
Clase 8
Condiciones bajo agrupamiento
-
done_all
Clase 9
Unir resultados
-
done_all
Clase 10
Sub consultas
-
done_all
Clase 11
Validar registros
-
done_all
Clase 12
Ejercicios
-
-
check_circle_outlineMódulo 9 | 7 clases
Joins
expand_more -
check_circle_outlineMódulo 10 | 4 clases
Vistas
expand_more -
check_circle_outlineMódulo 11 | 7 clases
Procedimientos
expand_more -
check_circle_outlineMódulo 12 | 4 clases
Transacciones
expand_more -
check_circle_outlineMódulo 13 | 5 clases
Extras
expand_more -
check_circle_outlineMódulo 14 | 5 clases
Triggers
expand_more -
check_circle_outlineMódulo 15.-
Examen del curso
expand_more-
done_all
Examen
Examen final del curso
-
41 comentario(s)
-Crear una función la cual nos permita saber si un libro es candidato a préstamo o no. Retornar “Disponible” si el libro posee por lo menos un ejemplar en stock, en caso contrario retornar
“No disponible.”
DELIMITER #
CREATE FUNCTION prestar_libro(comprobar_libro INT)
RETURNS VARCHAR(30)
READS SQL DATA
DETERMINISTIC
BEGIN
RETURN IF(EXISTS(SELECT libros_id
FROM libros
WHERE libros_id=comprobar_libro AND stock>1),
“Esta Disponible”,
“No Esta Disponible”
);
END#
DELIMITER ;
SELECT routine_name FROM information_schema.routines WHERE routine_schema = database() and routine_type = ‘FUNCTION’;
/* Obtener el id de todos los escritores cuyas ventas en sus libros superen el promedio. */
SET @avg_ventas = (SELECT AVG(libros.ventas) from autores INNER JOIN libros ON libros.autor_id = autores.autor_id);
SELECT
autores.autor_id,
autores.nombre,
AVG(libros.ventas) AS “AVG de ventas del autor”,
@avg_ventas AS “AVG de todos los libros”
FROM autores INNER JOIN libros ON libros.autor_id = autores.autor_id
GROUP BY autores.autor_id
HAVING AVG(libros.ventas) > @avg_ventas;
/* Obtener el id de todos los escritores cuyas ventas en sus libros sean mayores a cien mil ejemplares. */
SELECT autores.autor_id, autores.nombre, libros.ventas
FROM autores
INNER JOIN libros ON libros.autor_id = autores.autor_id AND libros.ventas > 100
GROUP BY autores.autor_id;
LIBROS
/* Obtener todos los libros escritos por autores que cuenten con un seudonimo. */
SELECT libro_id FROM libros WHERE autor_id IN ( SELECT autor_id FROM autores WHERE seudonimo IS NOT NULL);
SELECT libro_id FROM libros INNER JOIN autores ON libros.autor_id = autores.autor_id AND autores.seudonimo IS NOT NULL;
/* Obtener el titulo de todos los libros publicados en el ano actual cuyos autores poseen un pseudonimo. */
SELECT libro_id, libros.autor_id, fecha_publicacion FROM libros INNER JOIN autores ON libros.autor_id = autores.autor_id AND autores.seudonimo IS NOT NULL AND YEAR(libros.fecha_publicacion) = YEAR(NOW());
/* Obtener todos los libros escritos por autores que cuenten con un seudonimo y que hayan nacido ante de 1965. */
SELECT libro_id, libros.autor_id FROM libros INNER JOIN autores ON libros.autor_id = autores.autor_id AND autores.seudonimo IS NOT NULL AND YEAR(autores.fecha_nacimiento) <= 1965;
/* Colocar el mensaje no disponible a la columna descripcion, en todos los libros publicados antes del ano 2000. */
UPDATE libros SET descripcion = “NO DISPONIBLE” WHERE YEAR(fecha_publicacion) < 2000;
/* Obtener la llave primaria de todos los libros cuya descripcion sea diferente de no disponible.*/
SELECT libro_id FROM libros WHERE descripcion != “NO DISPONIBLE”;
/* Obtener el titulo de los ultimos 3 libros escritos por el autor con id 2. */
SELECT * FROM libros WHERE autor_id = 2 ORDER BY fecha_publicacion DESC LIMIT 3;
/*Obtener en un mismo resultado la cantidad de libros escritos por autores con seudonimo y sin seudonimo.
Ejemplo
con seudonimo sin seudonimo
10 20 */
SET @libros_seudonimos = (SELECT COUNT(libro_id) FROM libros INNER JOIN autores ON libros.autor_id = autores.autor_id AND autores.seudonimo IS NOT NULL);
SET @libros_sin_seudonimos = (SELECT COUNT(libro_id) FROM libros INNER JOIN autores ON libros.autor_id = autores.autor_id AND autores.seudonimo IS NULL);
SELECT @libros_seudonimos AS “CON SEUDONIMO”, @libros_sin_seudonimos AS “SIN SEUDONIMOS”, (@libros_seudonimos + @libros_sin_seudonimos) AS total_libros;
/* Obtener la cantidad de libros publicados entre enero del ano 2000 y enero del ano 2005. /
SELECT COUNT() FROM libros WHERE YEAR(libros.fecha_publicacion) >= 2000 AND YEAR(libros.fecha_publicacion) <= 2005;
/* Obtener el titulo y el numero de ventas de los cinco libros mas vendidos. */
SELECT titulo, ventas FROM libros ORDER BY ventas DESC LIMIT 5;
/* Obtener el titulo y el numero de ventas de los cinco libros mas vendidos de la ultima decada. */
SELECT titulo, ventas, fecha_publicacion FROM libros WHERE YEAR(fecha_publicacion) >= (YEAR(CURDATE() - INTERVAL 10 YEAR)) ORDER BY ventas DESC LIMIT 5;
/* Obtener la cantidad de libros vendidos por los autores con id 1, 2 y 3.
Ejemplo
autor ventas
1 10
2 20
2 30 */
SELECT libro_id, autor_id, SUM(ventas) from libros WHERE autor_id IN (1,2,3) GROUP BY autor_id ORDER BY autor_id;
/* Obtener el titulo del libro con mas paginas. */
SELECT titulo, paginas FROM libros ORDER BY paginas DESC LIMIT 1;
set @libros_con_seudonimo=(select count(libro_id) from libros where autor_id in (select autor_id from autores where seudonimo is not null));
set @libros_sin_seudonimo=(select count(libro_id) from libros where autor_id in (select autor_id from autores where seudonimo is null));
select @libros_con_seudonimo as "Con seudonimio", @libros_sin_seudonimo as "Sin seudonimio";
select count(libro_id) from libros where year(fecha_publicacion) between 2000 and 2005;
select titulo, ventas from libros order by ventas asc limit 5; select titulo, ventas from libros where fecha_publicacion between curdate() - interval 10 year and curdate() order by ventas asc limit 5;
select title from books where author_id in(1,2,3);
select autor_id as autor, sum(ventas) from libros where autor_id in (1,2,3) group by autor_id;
select titulo,paginas from libros order by paginas desc limit 1; select titulo from libros where titulo like("La%"); select titulo from libros where titulo regexp '^La.{1,}a$'; update libros set stock=0 where year(fecha_publicacion)<1995;
select if( exists(select libro_id from libros where libro_id=1 and stock>5), "Diposnible", "No disponible" )as "Diponibilidad";
select titulo, fecha_publicacion from libros order by fecha_publicacion desc;
select nombre from autores where year(fecha_nacimiento)>1950;
select concat(nombre," ",apellido) as "Nombre completo", year(curdate())-year(fecha_nacimiento) as edad from autores;
select concat(nombre, " ", apellido) as "Nombre completo" from autores where autor_id in(select autor_id from libros where year(fecha_publicacion)>2005);
select autor_id, sum(ventas) as ventas from libros group by autor_id having sum(ventas)>100000;
delimiter // create function puedo_prestar(libro_comprobar int) returns varchar(20) begin return if(exists(select libro_id from libros where libro_id=libro_comprobar and stock>1), "Disponible", "No disponible"); end// delimiter ;