Está en la página 1de 2

create database TBD

use TBD
create table producto(
idprod int constraint pk_idprod primary key,
descripcion varchar(50) not null,
stock int constraint ck_stock check (stock>=0) not null,
precio money constraint ck_precio check (precio>=0) not null
)
create table pedido(
idpedido int constraint pk_idpedido primary key,
fecha date not null,
monto money constraint ck_monto check (monto>=0) not null
)
create table detpedido(
idpedido int constraint fk_idpedido foreign key references pedido(idpedido),
idprod int constraint fk_idprod foreign key references producto(idprod),
canti int constraint ck_canti check (canti>=0) nxot null,
precuni money not null,
primary key (idpedido,idprod)
)
insert
insert
insert
insert
insert

producto
producto
producto
producto
producto

insert
insert
insert
insert

pedido
pedido
pedido
pedido

insert
insert
insert
insert
insert
insert
insert

detpedido
detpedido
detpedido
detpedido
detpedido
detpedido
detpedido

values(120,'clavos',20,2)
values(140,'tornillos',50,4)
values(160,'sierra 1/2',0,4)
values(180,'martillo',100,10)
values(185,'desarmador',150,15)

values(10,'20140923',100)
values(12,'20140924',150)
values(14,'20140924',200)
values(15,'20141005',500)
values(10,120,10,2)
values(12,120,75,2)
values(14,120,50,2)
values(10,140,20,4)
values(15,140,250,2)
values(14,160,20,4)
values(14,180,2,10)

select * from producto


select * from pedido
select * from detpedido
-- 1. Listar los productos que no tengan stock
select * from producto where stock=0
-- 2. Listar los pedidos de montos mayores a 150 y que sean del mes de setiembre del
2014
select * from pedido
where monto>150 and month(fecha)=9 and year(fecha)=2014
-- 3. Listar los productos con stock y que la descripcin inicie con la letra 'd' o
'm'
select * from producto

where stock>1 and descripcion like '[d,m]%'


-- 4. Listar los productos con stock , que el precio exceda de 4 y que la descripcin
termine con la letra O
select * from producto
where stock>1 and precio>4 and descripcion like '%o'
-- 5. Listar que productos no tienen movimiento
select * from producto
where idprod not in (select idprod from detpedido)
-- 6. Listar los productos que se compraron el 24/09/14
select pro.idprod, pro.descripcion, ped.fecha, sum(ped.monto) as [monto total]
from producto pro inner join detpedido det on pro.idprod=det.idprod
inner join pedido ped on det.idpedido=ped.idpedido
where ped.fecha='20140924'
group by pro.idprod, pro.descripcion, ped.fecha
-- 7. Listar los productos que se compraron el 24/09/14 y sus precios unitarios
excedan de 6
select pro.idprod, pro.descripcion, ped.fecha, sum(ped.monto) as [monto total]
from producto pro inner join detpedido det on pro.idprod=det.idprod
inner join pedido ped on det.idpedido=ped.idpedido
where ped.fecha='20140924' and det.precuni>6
group by pro.idprod, pro.descripcion, ped.fecha
-- 8. Listar los 2 productos ms vendidos
select top 2 with ties pro.idprod, pro.descripcion, sum(ped.monto) as [monto total]
from producto pro inner join detpedido det on pro.idprod=det.idprod
inner join pedido ped on det.idpedido=ped.idpedido
group by pro.idprod, pro.descripcion
order by 3 desc
-- 9. Listar el producto menos vendido
select top 1 with ties pro.idprod, pro.descripcion, sum(ped.monto) as [monto total]
from producto pro inner join detpedido det on pro.idprod=det.idprod
inner join pedido ped on det.idpedido=ped.idpedido
group by pro.idprod, pro.descripcion
order by 3 asc
-- 10. Listar los productos ms vendidos que corresponde al mes de setiembre del 2014
select top 1 with ties pro.idprod, pro.descripcion, sum(ped.monto) as [monto total]
from producto pro inner join detpedido det on pro.idprod=det.idprod
inner join pedido ped on det.idpedido=ped.idpedido
where month(fecha)=9 and year(fecha)=2014
group by pro.idprod, pro.descripcion
order by 3 desc

También podría gustarte