Está en la página 1de 2

IBBDD 2013 Primera Fecha de Segundo Parcial 12/11/2013

lgebra Relacional y SQL

Dadas las siguientes relaciones resolver a, b y c en AR y SQL, y d y e slo en SQL.

VENDEDOR (idVend, nombre, fNac, fIngreso)


AUTO (idAuto, marca, modelo, color, rodado, valor)
RESPONSABLE (idResp, nombre, apellido, fNac)
CONCESIONARIA (idConc, localidad, idResp, direccin, telfono)
VENTA (idVenta, idConc, idVend, idAuto, fecha, monto)

a) Listar monto y fecha de venta, direccin y localidad de concesionaria y nombre del vendedor, de ventas superiores a los
$120000 en el mes de octubre de 2013.
monto, fecha, direccin, localidad, nombre ( monto > 120000 & 1-10-2013 fecha 31-10-2013 ( VENTA ) || CONCESIONARIA || VENDEDOR )

SELECT monto, fecha, direccin, localidad, nombre

FROM VENTA V INNER JOIN CONCESIONARIA C ON V.idConc=C.idConc INNER JOIN VENDEDOR VE ON


V.idVend=VE.idVend
WHERE monto > 120000 AND MONTH(fecha)=10 AND YEAR(fecha)=2013;

b) Listar marca y modelo de autos que no se hayan vendido en el mes de octubre de 2013.

marca, modelo ( AUTO ) marca, modelo ( 1-10-2013 fecha 31-10-2013 (VENTA) || AUTO )

SELECT marca, modelo


FROM AUTO A
WHERE NOT EXISTS
( SELECT *

FROM VENTA V
WHERE V.idAuto=A.idAuto AND MONTH(fecha)=10 AND YEAR(fecha)=2013);

c) Listar marca y modelo de autos que se hayan vendido en todas las sucursales en el mes de octubre de 2013.
marca, modelo, idConc ( 1-10-2013 fecha 31-10-2013 ( VENTA || AUTO ) ) % idConc ( CONCESIONARIA )

SELECT marca, modelo


FROM AUTO A
WHERE NOT EXISTS
( SELECT *
FROM CONCESIONARIA C

WHERE NOT EXISTS


( SELECT *
FROM VENTA V
WHERE MONTH(fecha)=10 AND YEAR(fecha)=2013 AND V.idConc=C.idConc AND V.idAuto=A.idAuto) );
d) Listar las direcciones de las concesionarias de la localidad La Plata con el nombre y apellido del responsable, por orden de
apellido.

SELECT direccin, nombre, apellido


FROM CONCESIONARIA C INNER JOIN RESPONSABLE R ON C.idResp=R.idResp
WHERE localidad = La Plata
ORDER BY apellido;

e) Listar para cada vendedor con fecha de ingreso anterior al 1-1-2012, nombre, fecha de nacimiento, y cantidad de ventas que
realiz en el ao 2012.
Si se considera que algn vendedor con fecha de ingreso anterior al 1-1-2012 pudo no haber realizado alguna venta en el ao
2012, para que figuren en el resultado con cantidad de ventas 0 se debe hacer:
(SELECT nombre, fNac, COUNT(*) AS cantVentas
FROM VENTA V1 INNER JPOIN VENDEDOR V2 ON V1.idVend=V2.idVend

WHERE fIngreso < 1-1-2012 AND YEAR(fecha)=2012


GROUP BY nombre, fNac)
UNION
(SELECT nombre, fNac, 0 AS cantVentas
FROM VENDEDOR V1
WHERE NOT EXISTS (SELECT * FROM VENTA V2 WHERE YEAR(fecha)=2012 AND V2.idVend=V1.idVend);

Tambin se admite:
SELECT nombre, fNac, COUNT(*) AS cantVentas
FROM VENTA V1 INNER JPOIN VENDEDOR V2 ON V1.idVend=V2.idVend
WHERE fIngreso < 1-1-2012 AND YEAR(fecha)=2012

GROUP BY nombre, fNac;

También podría gustarte