1. UNIVERSIDAD NACIONAL DEL CALLAO
Facultad de Ingeniería Industrial y de Sistemas
Escuela Profesional de Ingeniería de Sistemas
• ASIGNATURA: Base de Datos
• DOCENTE: Eddie Malca
• ALUMNOS:
- Bello Sánchez, Giancarlos
2019
EJERCICIOS SQL
2. Caso 2 – Sistema de Facturación
CLI (Cliente) = {DNI, NYA, SEXO, EDAD, DIR, TEL, ZONA}
RU (Rubros) = {CODR, DESC_RU}
ART (Artículo) = {CODA, DESC_ART, STOCK, PTO_REP (PUNTO DE REPOSICIÓN), CODR, PRECIO (precio actual)}
FAC (Factura) = {NROFACT, FECHA, DNI}
REM (Remito) = {NROREM, FECHA, NROFACT}
LÍ-F (Línea-Factura) = {NROFACT, CODA, CANT, PRECIO (precio al momento de la venta)}
LÍ-R (Línea-Remito) = { NROREM, CODA, CANT}
EJERCICIO
a) Resuelva las consultas planteadas usando el lenguaje SQL.
1. Mostrar el código, la descripción y el stock de los artículos.
Respuesta:
SELECT CODA, DESC_ART, STOCK FROM ARTICULO;
3. 2. Obtener los artículos (código del artículo, descripción y stock) cuyo stock es mayor a 100 y que pertenezcan al rubro
R01.
Respuesta:
SELECT CODA, DESC_ART, STOCK FROM ARTICULO STOCK > 100 AND CODR = 'R01';
3. Obtener los artículos que se deberían reponer (código del artículo, descripción y stock); es decir, el stock es menor o
igual al punto de reposición.
Respuesta:
SELECT CODA, DESC_ART, STOCK FROM ARTICULO WHERE STOCK <= 1;
4. Mostrar a que rubro pertenece cada artículo (obteniendo descripción del artículo y del rubro).
Respuesta:
SELECT DESC_ART, DESC_RU FROM ARTICULO, RUBRO;
5. Obtener el código y la descripción del artículo, de aquellos artículos que pertenecen al rubro limpieza.
Respuesta:
SELECT CODA , DESC_ART , DESC_RU FROM ARTICULO , RUBRO WHERE DESC_RU = 'LIMPIEZA’;
6. Obtener los números de facturas que se emitieron desde el 10/01/2014 hasta el 10/04/2014.
Respuesta:
SELECT NROFACT FROM FACTURA WHERE NROFACT BETWEEN 10/01/2014 AND 10/04/2014;
4. 7. Mostrar el nombre de los clientes que viven en la zona de Santa Lucia.
Respuesta:
SELECT NYA FROM CLIENTE WHERE ZONA = 'SANTA LUCIA';
8. Obtener el nombre de los clientes que viven en la misma zona que Rita Pérez (DNI: 38.498.425).
Respuesta:
SELECT ZONA FROM CLIENTE WHERE NYA ='RITA PEREZ' AND DNI = '38.498.425' ; SELECT NYA FROM CLIENTE WHERE ZONA = 'SURCO';
9. Obtener el nombre de los clientes que han comprado más de un producto; es decir, en la misma factura compro distintos
tipos de productos sin importar la cantidad de c/u de ellos.
Respuesta:
SELECT NYA FROM CLIENTE, LINEA_FACTURA WHERE CODA <> 0;
10. Mostrar el nombre de los clientes que viven en la zona de Santa Lucia o en la zona de Rawson o en la zona de Rivadavia.
Respuesta:
SELECT NYA FROM CLIENTE WHERE ZONA = 'SANTA LUCIA ' OR ZONA = 'RAWSON' OR ZONA = 'RIVADAVIA';
11. Mostrar los clientes (el DNI y el nombre) que han comprado artículos del rubro limpieza y también han comprado
artículos del rubro perfumería.
Respuesta:
SELECT NYA , DNI FROM CLIENTE , RUBRO WHERE DESC_RU='LIMPIEZA' OR DESC_RU= 'PERFUMERIA';
5. 12. Mostrar los clientes (el dni y el nombre) que no viven en la zona de Capital.
Respuesta:
SELECT NYA , DNI FROM CLIENTE WHERE ZONA <> 'CAPITAL';
13. Mostrar los clientes (el dni y el nombre) que no han comprado artículos del rubro librería.
Respuesta:
SELECT NYA , DNI FROM CLIENTE , RUBRO WHERE DESC_RU<> 'LIBERIA';
14. Mostrar las facturas (todos los datos) que posean artículos pendientes; es decir, las facturas que poseen
artículos pendientes (faltan enviar artículos). Considere que siempre se entrega la cantidad total en el remito; es
decir, la cantidad de la factura coincide con la cantidad del remito).
Respuesta:
SELECT NYA , DNI FROM CLIENTE , RUBRO WHERE DESC_RU<> 'LIBERIA';
15. Mostrar los clientes (todos los datos) que entre sus facturas donde han comprado todos los artículos.
Respuesta:
SELECT NYA , DNI, SEXO, EDAD, DIR, TEL , ZONA FROM CLIENTE , FACTURA WHERE NROFACT <> ' ';
16. Mostrar la cantidad total de desodorante Rexona Men que se han vendido.
Respuesta:
SELECT CODA FROM ARTICULO WHERE DESC_ART = 'REXONA MEN '; SELECT CANT FROM LINEA_FACTURA WHERE CODA =
'B03';
6. 17. Mostrar el nombre del artículo mas vendido (en cantidad total).
Respuesta:
SELECT LINEA FACTURA.CODA, SUM(LINEA FACTURA.CANT) AS EXPR1 FROM LINEA FACTURA GROUP BY LINEA
FACTURA.CODA
b) Sobre el esquema de base de dato planteado en el Caso 2 - Sistema de Facturación, enuncie las consultas en SQL para
actualizarla:
1. Inserte nuevos Clientes con los siguientes datos:
< 14895399, Perez Edgar, M, 35, Hipólito Irigoyen 528, 4222935, Rawson >
< 24835599, González Rosa, F, 50, Hipólito Irigoyen 528, 4229115, Rivadavia >
< 34895399, Fernández Luis, M, 28, Hipólito Irigoyen 528, 4293538, Santa Lucia >
< 17895399, Ruiz Analía, F, 18, Hipólito Irigoyen 528, 4258912, Pósito >
INSERT INTO CLIENTE VALUES ('14895399','PEREZ EDGAR','M','35','HIPÓLITO IRIGOYEN 528,','4222935','RAWSON’);
INSERT INTO CLIENTE VALUES ('24835599','GONZÁLEZ ROSA','F','50','HIPÓLITO IRIGOYEN 528','4229115','RIVADAVIA’);
INSERT INTO CLIENTE VALUES ('34895399','FERNÁNDEZ LUIS','M','28','HIPÓLITO IRIGOYEN 528','4293538','SANTA LUCIA’);
INSERT INTO CLIENTE VALUES ('17895399','RUIZ ANALÍA','F','18','HIPÓLITO IRIGOYEN 528','4258912','PÓSITO');
2. Inserte el nuevo rubro con los siguientes datos: < R08 , Lacteos >
Respuesta:
INSERT INTO RUBRO VALUES ('R08','LACTEOS');
7. 3. Inserte el nuevo artículo con los siguientes datos: < A21, Yogurt Entero, 100, 25, R08, 10 >
Respuesta:
INSERT INTO ARTICULO VALUES ('A21','YOGURT ENTERO','100', '25', 'R08', '10');
4. Actualice el teléfono de la Cliente González Rosa por el número 4312548.
Respuesta:
UPDATE CLI SET TEL=«4312548» WHERE NYA=«González Rosa»
c) Sobre el esquema de base de dato planteado en el Caso 2 - Sistema de Facturación, realice las siguientes vistas:
1. Una Vista llamada Reponer que contenga los siguientes atributos: coda, desc_art, stock, pto_rep. La vista deberá obtener los
artículos que se deberán reponer.
Respuesta:
CREATE VIEW REPONER AS SELECT CODA, DESC_ART, STOCK, PTO_REP FROM ARTICULO WHERE PTO_REP <= '1'; SELECT * FROM REPONER;
8. Caso 4 – Accidentes de Tránsito
COMPSEG (Compañía de Seguros) = {CUIT, NOMC, DOMI, TEL}
VEHI (Vehículos) = {PAT, MODELO, TIPO (MOTO, AUTO, CAMIONETA O CAMIÓN), CUIT, CM, DNI}
MARCAS = {CM, DESCRIP}
PERS (Personas) = {DNI, NOM, EDAD, DOMI, TEL}
ACTA = {NROACTA, LUGAR, FECHA, HORA}
INVO (Involucrados) = {NROACTA, PAT, DNI, CONDUCTOR (SI/NO), DAÑO (SIN DAÑO, LEVE, GRAVE O FATAL)}
a) Resuelva las consultas planteadas usando el lenguaje SQL.
9. 1.Obtener el nombre de las compañías de Seguros que tienen asegurados todos los tipos de vehículos.
Respuesta:
SELECT NOMC FROM COMPSEG, VEHI WHERE TIPO = 'MOTO' OR TIPO = 'AUTO' OR = TIPO 'CAMIONETA ' OR TIPO= ' CAMIÓN';
2. Obtener todos los datos de los vehículos que no han tenido accidentes fatales.
Respuesta:
SELECT PAT, MODELO, TIPO ,CUIT, CM, DNI FROM INVO, VEHI WHERE DAÑO <> 'FATAL';
3. Obtener la patente de los autos involucrados en choques, en los que viajaba solamente el conductor (es decir, no tenía
acompañantes).
Respuesta:
SELECT PAT FROM PERS, INVO; WHERE DAÑO = 'FATAL' OR DAÑO = 'SIN DAÑO' OR DAÑO = 'LEVE' OR DAÑO = 'GRAVE' ; SELECT COUNT
(DISTINCT DNI) FROM PERS;
4. Obtener todos los datos de las personas que han chocado manejando su propio vehículo.
Respuesta:
SELECT DNI, NOM, EDAD, DOMI, TEL FROM PERS, INVO; WHERE DAÑO = 'FATAL' OR DAÑO = 'SIN DAÑO' OR DAÑO = 'LEVE’ OR
DAÑO = 'GRAVE' AND CONDUCTOR='SI' ;
5. Obtener las personas (dni y nombre) que poseen más de un vehículo asegurado en la misma compañía de Seguros.
Respuesta:
SELECT DNI, NOM FROM PERS WHERE DNI IN (SELECT DNI FROMWEHI GROUP BY DNI, CUIT HAVING COUNT(*) >= 2);
6. Obtener las personas (dni y nombre) que estuvieron involucradas en accidentes con daño “leve” y también estuvieron
involucradas en accidentes sin daño. Respuesta:
SELECT DNI, NOM FROM PERS, INVO; WHERE DAÑO = 'SIN DAÑO' OR DAÑO = 'LEVE' ;
10. b)Sobre el esquema de base de dato planteado en el Caso 4 - Accidentes de Tránsito, enuncie las consultas en SQL
para actualizarla:
1. Inserte nuevas Personas con los siguientes datos:
< 14895399, Ruiz Mathías, 34, Hipólito Irigoyen 528, 4222935 >
< 24835599, González Emiliano, 56, Av. Central 128 -O-, 4229115 >
Respuesta:
INSERT INTO PERS VALUES ('14895399',' RUIZ MATHÍAS','34','HIPÓLITO IRIGOYEN 528,','4222935’);
INSERT INTO PERS VALUES ('24835599',' GONZÁLEZ EMILIANO ','56',' AV. CENTRAL 128 -O-,','4229115');
c) Sobre el esquema de base de dato planteado en el Caso 4 - Accidentes de Tránsito, realice las siguientes vistas:
1. Una Vista llamada AccidentesLeves que contenga los siguientes atributos: dni y nombre. La vista deberá obtener las
personas que estuvieron involucradas en accidentes con daño “leve”.
Respuesta:
CREATE VIEW ACCIDENTESLEVES AS SELECT DNI, NOMBRE FROM PERS WHERE DAÑO = 'LEVE'; SELECT * FROM ACCIDENTESLEVES;