Este documento presenta un caso de estudio sobre un sistema de facturación. Incluye tablas como CLIENTE, RUBRO, ARTÍCULO, FACTURA, entre otras. Luego propone una serie de consultas SQL para obtener información de las tablas, como artículos por código y stock, clientes por zona, facturas emitidas en un rango de fechas, etc. Finalmente, propone inserciones y actualizaciones a las tablas, así como la creación de vistas.
Reporte homicidio doloso descripción
Reporte que contiene información de las víctimas de homicidio doloso registradas en el municipio de Irapuato Guanajuato durante el periodo señalado, comprende información cualitativa y cuantitativa que hace referencia a las características principales de cada uno de los homicidios.
La información proviene tanto de medios de comunicación digitales e impresos como de los boletines que la propia Fiscalía del Estado de Guanajuato emite de manera diaria a los medios de comunicación quienes publican estas incidencias en sus distintos canales.
Podemos observar cantidad de personas fallecidas, lugar donde se registraron los eventos, colonia y calle así como un comparativo con el mismo periodo pero del año anterior.
Edades y género de las víctimas es parte de la información que incluye el reporte.
Ipsos, empresa de investigación de mercados y opinión pública, divulgó su informe N°29 “Claves Ipsos” correspondiente al mes de abril, que encuestó a 800 personas con el fin de identificar las principales opiniones y comportamientos de las y los ciudadanos respecto de temas de interés para el país. En esta edición se abordó la a Carabineros de Chile, su evaluación, legitimidad en su actuar y el asesinato de tres funcionarios en Cañete. Además, se consultó sobre el Ejército y la opinión respecto de la marcha en Putre.
1. FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Base de Datos - SQL
Autor: Fernando Huamaní Ramos
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}
3. 1.- Mostrar el código, la descripción y el stock de los artículos.
SELECT coda, desc_art , stock FROM ARTICULO;
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.
SELECT a.coda, a.desc_art , a.stock , b.CODR
FROM ARTICULO a, RUBRO b
WHERE a.STOCK > 100 and b.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
SELECT coda, desc_art, stock
FROM ARTICULO
WHERE stock <= 1;
4. 4. Mostrar a que rubro pertenece cada artículo (obteniendo descripción del artículo y del rubro).
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.
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.
SELECT nrofact
FROM Factura
WHERE nrofact between 10/01/2014 and 10/04/2014;
5. 7. Mostrar el nombre de los clientes que viven en la zona de Santa Lucia.
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).
SELECT zona
FROM Cliente
WHERE nya ='Rita Perez' and DNI = '38.498.425' ;
SELECT NYA
FROM Cliente
where zona = 'surco';
6. 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.
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.
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.
SELECT NYA , DNI
FROM Cliente , rubro
WHERE desc_ru='limpieza' or desc_ru= 'perfumeria';
7. 12. Mostrar los clientes (el dni y el nombre) que no viven en la zona de Capital.
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.
SELECT NYA , DNI
FROM Cliente , rubro
WHERE desc_ru<> 'liberia';
8. 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).
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.
SELECT NYA , DNI, sexo, edad, dir, tel , zona
FROM Cliente , factura
WHERE nrofact <> ' ';
9. 16. Mostrar la cantidad total de desodorante Rexona Men que se han vendido.
SELECT coda
FROM articulo
WHERE desc_art = 'Rexona men ';
SELECT cant
FROM Linea_factura
WHERE coda = 'b03';
17. Mostrar el nombre del artículo mas vendido (en cantidad total).
SELECT Linea factura.coda, Sum(linea factura.cant) AS Expr1
FROM Linea factura
GROUP BY linea factura.coda
10. b) Sobre el esquema de base de dato planteado en el Caso 2 - Sistema de Facturación,
enuncie las consultas en SQL para actualizarla:
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 >
2. Inserte el nuevo rubro con los siguientes datos:
< R08 , Lacteos >
3. Inserte el nuevo artículo con los siguientes datos:
< A21, Yogurt Entero, 100, 25, R08, 10 >
11. create table Cliente(dni varchar(20) primary key, nya varchar(45), sexo varchar(1),edad INT,dir
varchar(35),tel INT,zona varchar(35));
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');
create table Rubro(codr varchar(5), desc_ru varchar(20) );
insert into Rubro values ('R08','Lacteos');
create table Factura(nrofact INT, fecha Date, dni INT);
create table Remito(nrorem INT,fecha date, nrofact INT);
create table Linea facturas (nrofact int, coda varchar(20) ,cant INT, precio real);
create table Linea remito(nrorem int,coda int, cant int );
12. create table Articulo (coda varchar(5), desc_art varchar(20), stock INT, pto_rep INT, codr
varchar(20), precio real);
insert into Articulo values ('A21','Yogurt Entero','100', '25', 'R08', '10');
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
CREATE OR REPLACE VIEW Reponer AS
SELECT coda, desc_art, stock, pto_rep
FROM articulo
WHERE pto_rep <= '1';
select * from Reponer;
13. 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)}
Resuelva las consultas planteadas usando el lenguaje SQL.
Caso 4 - Accidentes de Tránsito
14. 1. Obtener el nombre de las compañías de Seguros que tienen asegurados todos los tipos de
vehículos.
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.
SELECT pat, modelo, tipo ,cuit, cm, dni
FROM invo, VEHI
WHERE daño <> 'fatal';
15. 3. Obtener la patente de los autos involucrados en choques, en los que viajaba solamente el
conductor (es decir, no tenía acompañantes).
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.
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' ;
16. 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.
SELECT dni, nom
FROM pers, invo;
WHERE daño = 'sin daño' or daño = 'leve' ;
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 >
17. create table COMPSEG (cuit varchar(20) primary key , nomC varchar(40), domi varchar(40), tel
INT);
create table VEHI (pat varchar(40), primary key modelo varchar(40) , tipo varchar(40) , cuit
varchar(40), cm varchar(40), dni int);
create table MARCAS (cm varchar(40) primary key, descrip varchar(40));
create table PERS (dni INT primary key, nom varchar(40), edad INT, domi varchar(40), tel INT);
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');
create table INVO (nroActa int primary key, pat varchar(40), dni int, conductor varchar(40), daño
varchar(40) );
18. 2. Actualice el teléfono y el domicilio de la persona González Emiliano por el número 4312548 y el
domicilio Juan Jufre 345 -N-.
Update pers
Set domi = 'Juan Jufre 345 -N-.',
Set tel = '4312548'
Where nom = 'González Emiliano'
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”.
CREATE VIEW Accidentesleves AS
SELECT dni, nombre
FROM pers
WHERE daño = 'leve';
select * from Accidentesleves;