miércoles, 1 de mayo de 2013

create table autor(
cod_autor integer not null,
nombre_autor varchar2(50) not null,
fecha_nacimiento date not null,
nacionalidad varchar2(50),
constraint pk_cod_autor primary key(cod_autor)
);
create table libro(
cod_libro integer not null,
titulo varchar2(50) not null,
id_autor integer not null,
año varchar2(20) not null,
nom_editorial varchar2(50) not null,
precio float not null,
constraint pk_cod_libro primary key(cod_libro)
);
insert into autor values('10','Alejandro Dumas', '10-10-1982', 'Francesa');
insert into autor values('12','Ruben Dario', '05-10-1987', 'Nicaraguense');
insert into autor values('11','Mark Twain', '11-06-1835', 'Estadounidense');
insert into autor values('13','Victor Hugo', '04-10-1802', 'Francesa');
insert into libro values('102','Los tres Mosqueteros','10','2003', 'Altazor',15700);
insert into libro values('101','El Conde de Monte Cristo','10','2004', 'Antares',12500);
insert into libro values('103','Las Aventuras de Tom Sawyer','11','2002', 'Contra Punto',17800);
insert into libro values('104','Cantos de Vida y Esperanza','12','2002', 'Antares',19800);
insert into libro values('105','Los Miserables','13','2003', 'Contra Punto',16700);
desc autor;
desc libro;
drop table libro cascade constraint;
-----------------------------------------------------------------------------
1)Determinar la cantidad de libros en cada editorial
select nom_editorial, count(cod_libro) as "Cantidad de Libros"
from libro
group by nom_editorial ;
--------------------------------------------------------------
2)Determinar la suma de los precios de los libros de cada editorial
select nom_editorial, sum(precio) as "Suma total"
from libro
group by nom_editorial;
---------------------------------------
3)Determinar la cantidad de libros de cada editorial que no superen el precio de 18000
SELECT nom_editorial, count(cod_libro) as Cantidad_libros
FROM libro
WHERE precio < 18000
GROUP BY nom_editorial;
-------------------------------------------------------------
4)Determinar cuantas nacionalidades hay de cada autor ordenadas descendentemente
SELECT nacionalidad, count(cod_autor) AS Cantidad_de_Autores
FROM Autor
GROUP BY nacionalidad
Order by nacionalidad desc;
----------------------------------------------------------
5)Determinar la suma de los precios de los libros de cada editorial que no superen los 34000
SELECT nom_editorial, sum(precio) as suma_libros
FROM libro
GROUP BY nom_editorial
HAVING sum(precio) < 34000
-------------------------------------------------
6)Crear una vista que almacene la cantidad de libros de cada editorial que no superen el precio de 18000
Create view cant_libros as
SELECT nom_editorial, count(cod_libro) as Cantidad_libros
FROM libro
WHERE precio < 18000
GROUP BY nom_editorial

para revisar la vista
Select * from cant_libros;
----------------------------------
7)Crear una vista que almacene la suma de los precios de los libros de cada editorial que no superen los 34000
Create view suma_precios(editorial, suma) as
SELECT nom_editorial, sum(precio) FROM libro
GROUP BY nom_editorial
HAVING sum(precio) < 34000;
select *from cant_libros;
-----------------------------------------------------------
8) Crear una vista que almacene los nombres de los autores cuyos libros fueron editados por antares

Create view nom_autores(nombre) as
SELECT nombre_autor"
FROM libro, autor
Where cod_autor =id_autor and nom_editorial = 'antares';
--------------------------
9)Crear una vista que almacena los nombres de los libros que fueron escritos por Alejandro Dumas
Create or replace view  nom_libro(nombre_libro) as
SELECT titulo
FROM libro, autor
Where cod_autor =id_autor and nombre_autor = 'Alejandro Dumas' With read only;

select * from nom_libro;

No hay comentarios.:

Publicar un comentario