You are on page 1of 4

use master;

drop database libreria;


create database libreria;
use libreria;
create table editorial
(
codigo int identity primary key,
nombre nvarchar(50)
)
insert into editorial(nombre)values('Larousse');
insert into editorial(nombre)values('Santillana');
insert into editorial(nombre)values('Salamandra');
insert into editorial(nombre)values('Planeta');
--drop table libro
create table libro
(
codigo int identity primary key,
nombre nvarchar(50) not null,
autor nvarchar(50) not null,
editorial int references editorial(codigo),
valor float not null
)
insert into libro(nombre,autor,editorial,valor)values('Cien aos de soledad','Gabr
iel Garca Mrquez',1,5000);
insert into libro(nombre,autor,editorial,valor)values('El seor de los anillos','J
. R. R. Tolkien',2,25000);
insert into libro(nombre,autor,editorial,valor)values('1984','George Orwell',2,7
500);
insert into libro(nombre,autor,editorial,valor)values('Un mundo feliz','Aldous H
uxley',3,1000);
insert into libro(nombre,autor,editorial,valor)values('Orgullo y prejuicio','Jan
e Austen',4,15000);
insert into libro(nombre,autor,editorial,valor)values('Crimen y castigo','Fidor D
ostoyevski',4,20000);
insert into libro(nombre,autor,editorial,valor)values('Los pilares de la tierra'
,'Ken Follett',4,10000);
insert into libro(nombre,autor,editorial,valor)values('Un mundo sin fin','Ken Fo
llett',2,11000);
insert into libro(nombre,autor,editorial,valor)values('La ladrona de libros','Ma
rkus Zusak',2,13000);
insert into libro(nombre,autor,editorial,valor)values('El amor en los tiempos de
l cler','Gabriel Garca Mrquez',1,22000);
insert into libro(nombre,autor,editorial,valor)values('Juego de tronos','George
R.R.Martin',4,45000);
drop table pelicula
create table pelicula
(
codigo int identity primary key,
nombre nvarchar(50) not null,
director nvarchar(50) not null,
ano
int not null,
valor float not null
)
insert into pelicula(nombre,director,ano,valor)values('El padrino','Francis Ford

Coppola',1972,10000);
insert into pelicula(nombre,director,ano,valor)values('La Guerra de las Galaxias
','George Lucas', 1977,15000);
insert into pelicula(nombre,director,ano,valor)values('Regreso al futuro','Rober
t Zemeckis', 1985,5000);
insert into pelicula(nombre,director,ano,valor)values('Titanic', 'James Cameron'
, 1997,14000);
insert into pelicula(nombre,director,ano,valor)values('Parque Jursico', 'Steven S
pielberg', 1993,13000);
insert into pelicula(nombre,director,ano,valor)values('Avatar', 'James Cameron',
2009,7500);
insert into pelicula(nombre,director,ano,valor)values('El Seor de los anillos: La
comunidad del anillo', 'Peter Jackson', 2001,8000);
insert into pelicula(nombre,director,ano,valor)values('Cars', 'James Cameron', 2
009,4000);
insert into pelicula(nombre,director,ano,valor)values('Buscando a Nemo', 'James
Cameron', 2009,9000);
insert into pelicula(nombre,director,ano,valor)values('Croods', 'James Cameron',
2013,6000);
insert into pelicula(nombre,director,ano,valor)values('Bave', 'Steven Spielberg'
, 2012,15000);
create table cliente
(
codigo int identity primary key,
cedula nvarchar(25) not null unique,
nombre nvarchar(50) not null,
credito float default 50000
)
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into
into
into

cliente(cedula,nombre)values('2690910','Juan');
cliente(cedula,nombre)values('3749228','Gabriel');
cliente(cedula,nombre)values('9373638','Pedro');
cliente(cedula,nombre)values('1683832','Luis');
cliente(cedula,nombre)values('7536173','Ana');
cliente(cedula,nombre)values('2749462','Maria');
cliente(cedula,nombre)values('4139412','Andrea');
cliente(cedula,nombre)values('5739213','Carlos');
cliente(cedula,nombre)values('6438361','Cristina');
cliente(cedula,nombre)values('2836489','Oscar');

create table prestamo


(
codigo int identity primary key,
cliente int references cliente(codigo),
articulo int not null,
tipo char not null,--L = libro, P= pelicula
estado char not null default 'P'-- P= prestado , D = devuelto
)
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into

prestamo(cliente,articulo,tipo,estado)values(1,5,'P','D');
prestamo(cliente,articulo,tipo,estado)values(1,1,'L','D');
prestamo(cliente,articulo,tipo,estado)values(1,2,'P','D');
prestamo(cliente,articulo,tipo,estado)values(1,3,'L','D');
prestamo(cliente,articulo,tipo,estado)values(1,3,'P','D');
prestamo(cliente,articulo,tipo,estado)values(2,8,'L','D');
prestamo(cliente,articulo,tipo,estado)values(2,11,'P','D');
prestamo(cliente,articulo,tipo,estado)values(2,2,'L','D');

insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into

prestamo(cliente,articulo,tipo,estado)values(2,5,'P','D');
prestamo(cliente,articulo,tipo,estado)values(3,9,'L','D');
prestamo(cliente,articulo,tipo,estado)values(4,10,'P','P');
prestamo(cliente,articulo,tipo,estado)values(5,6,'L','P');
prestamo(cliente,articulo,tipo,estado)values(6,4,'P','D');
prestamo(cliente,articulo,tipo,estado)values(8,2,'L','D');
prestamo(cliente,articulo,tipo,estado)values(9,1,'P','P');
prestamo(cliente,articulo,tipo,estado)values(9,4,'L','D');
prestamo(cliente,articulo,tipo,estado)values(3,6,'P','P');
prestamo(cliente,articulo,tipo,estado)values(9,11,'L','D');
prestamo(cliente,articulo,tipo,estado)values(6,11,'P','P');
prestamo(cliente,articulo,tipo,estado)values(8,8,'L','D');
prestamo(cliente,articulo,tipo,estado)values(5,9,'P','P');
prestamo(cliente,articulo,tipo,estado)values(6,3,'L','D');
prestamo(cliente,articulo,tipo,estado)values(8,2,'P','P');
prestamo(cliente,articulo,tipo,estado)values(9,5,'L','D');
prestamo(cliente,articulo,tipo,estado)values(9,6,'P','D');
prestamo(cliente,articulo,tipo,estado)values(3,11,'L','D');
prestamo(cliente,articulo,tipo,estado)values(9,5,'P','P');
prestamo(cliente,articulo,tipo,estado)values(6,5,'L','D');
prestamo(cliente,articulo,tipo,estado)values(8,3,'P','P');

1 - Realizar un listado de todos los libros y peliculas con los que cuenta la bi
blioteca,
donde se muestren los siguientes datos:
a. Tipo(Libro,Pelicula)
b. Nombre.
c. Autor / Director.
select 'Libro',nombre,autor 'Autor / Director' from libro
union
select 'Pelicula',nombre,director 'Autor / Director' from pelicula
2 - La gerencia de la biblioteca esta interezada en saber cual seria el maximo d
e prestamos que se puede hacer
al prestarle todos los libros y todas las peliculas a todos los clientes
select sum(cont) proyeccion from (
select count(*) cont from cliente cross join pelicula
union all
select count(*) cont from cliente cross join libro) tabla
3 - De que editorial(nombre) es la que se han prestado mas libros.
select top 1 e.nombre,count(*) prestamos from prestamo p inner join libr
o l on p.articulo = l.codigo inner join editorial e on l.editorial= e.codigo
where p.tipo = 'L' group by e.nombre order by count(*) desc
4 - Lista de clientes y la cantidad de prestamos que han realizado cada uno
select nombre,count(*) cantidad from prestamo p inner join cliente c on p.client
e = c.codigo group by nombre order by count(*) desc
5 - Por medio de un select indicar el credito disponible que tiene X cliente
select c.credito - v.monto disponible from cliente c left join

(
select cliente, sum(valor) monto from
(
select cliente,valor from prestamo p inner join libro l on p.art
iculo = l.codigo where p.estado = 'P' and p.tipo= 'L'
union
select cliente,valor from prestamo p inner join pelicula l on p.
articulo = l.codigo where p.estado = 'P' and p.tipo= 'P'
) t
group by cliente
) v on c.codigo = v.cliente
where cliente = 5

6 - Cual es el valor promedio de los distintos articulos.


select avg(valor) promedio from (select valor from libro
union all
select valor from pelicula)v
7 - Listado de los tres libros(codigo, nombre) que mas se han prestado.
select top 3 nombre,count(*) veces from libro l inner join prestamo p on l.codig
o = p.articulo where p.tipo = 'L'
group by nombre order by count(*) desc
8 - Un
mo.
select
select
except
select

listado de los clientes(codigo, nombre) que no han realizado algun presta


codigo,nombre from cliente where codigo in(
codigo from cliente
cliente from prestamo )

9 - en total, cuantos prestamos se han realizado de peliculas y cuantos de libro


s.
select tipo,count(*) prestamos from prestamo group by tipo

You might also like