PEC2 Solución
PEC2 Solución
PEC2 Solución
Fecha de entrega:
08/04/2015
PROPUESTA SOLUCIN
Presentacin y Objetivos
La Prueba de Evaluacin Continuada II (PEC2) es la segunda de las cuatro PECs de las que
consta la asignatura. Dicha PEC tendr un peso del 20% de la nota final y los conceptos que se
trabajan en ella son los correspondientes al mdulo 'El lenguaje SQL'.
La PEC consta de dos preguntas, la primera de ellas sigue el mismo caso de lgebra relacional
de la PEC 1 y propone convertir algunas consultas en SQL, mientras que la segunda consiste en
la puesta en prctica de ciertos conocimientos adquiridos.
La valoracin de cada pregunta en el global de la PEC se incluye en la cabecera de cada
ejercicio. Puesto que la asignatura no tiene examen, es necesario realizar todas las PECs para
poder superar la asignatura.
Ejercicio 1 (55%)
a. Segn las relaciones detalladas en la PEC1 y las restricciones que se detallan a continuacin,
indicad las instrucciones SQL (para PostgreSQL) para la creacin de las tablas Commercial,
Demand, DemandCode, Zone y Flat, proponiendo los tipos de datos para cada atributo segn
sus posibles valores. Aadid las restricciones indicadas y las adicionales que aseguren un
mnimo de calidad de los datos (como mnimo se debe asegurar que las fechas estn
comprendidas entre unos mrgenes lgicos).
INDICACIONES: No utilicis herramientas de generacin automtica de cdigo. No declaris las restricciones
a posteriori (no utilicis ALTER TABLE para aadir restricciones despus de la creacin de las tablas). Dad
nombre a todas las restricciones.
NOTA: en el caso de desear crear las tablas en un esquema concreto, se debern utilizar las siguientes
instrucciones
CREATE SCHEMA p15;
SET search_path TO p15, "$user", public;
Demand
{demandCode,
commercialCode,
demandNumRooms}
(commercialCode) es clave fornea a Commercial
demandDate,
AND
demandNumMeters,
b. Indicad el orden en que se han tenido que crear las tablas, segn las relaciones que existen
entre ellas.
Commercial
Zone
Flat
Demand
DemandZone
c. Ejecutad las inserciones de datos que muestran seguidamente, corrigiendo los errores que
pueda haber. En caso de existir errores en datos que relacionan distintas tablas, considerad
como vlido el primero. Pueden corregirse libremente datos incorrectos que no tengan relevancia
para las consultas.
-- Table Flat
INSERT INTO Flat VALUES ('150315003', 'Calle Villalpurria, 34, 6o, 2a', '020', 53, 2, '15/03/2015');
INSERT INTO Flat VALUES ('150315004', 'Calle Santa Marta, 1', '021', 69, 3, '15/03/2015');
INSERT INTO Flat VALUES ('150312001', 'Avda. Cervantes, 51, 1o, 1a', '290', 112, 4, '12/03/2015');
INSERT INTO Flat VALUES ('150315005', 'Pasaje Cobos, 12', '353', 78, 3, '15/03/2015');
INSERT INTO Flat VALUES ('150311001', 'Calle Ramon Berenguer, 43, 5o, 2a', '290', 121, 5,
'11/03/2015');
INSERT INTO Flat VALUES ('150311002', 'Calle Urquinaona, 269, 3o, 1a', '290', 109, 4, '11/03/2015');
INSERT INTO Flat VALUES ('150315028', 'Calle Romanosa, 15, 3o, 3a', '350', 53, 2, '15/03/2015');
INSERT INTO Flat VALUES ('150315029', 'Calle Concierto Aranjuez, 7, 1a', '353', 46, 1, '15/03/2015');
INSERT INTO Flat VALUES ('150315033', 'Ronda Sur, PK. 8', '290', 73, 3, '15/03/2015');
-- Table Demand
d. Indicad las instrucciones SQL que resuelven las consultas siguientes y mostrad para cada
una de ellas una captura de pantalla con los datos resultantes:
d1. - Obtened el name y el surname de todos los comerciales que tengan alguna solicitud
(Demand) asignada.
SELECT name, surname
FROM Commercial JOIN Demand ON Commercial.commercialCode = Demand.commercialCode
GROUP BY name, surname;
d3. Obtened el cdigo de zona, el nombre y la ciudad donde estn, de las zona/zonas que
tienen ms solicitudes.
SELECT DemandZone.zoneCode, name, city
FROM DemandZone, Zone
WHERE DemandZone.zoneCode = Zone.zoneCode
GROUP BY DemandZone.zoneCode, name, city
HAVING COUNT(*) = (
SELECT COUNT(*)
FROM DemandZone
GROUP BY zoneCode
ORDER BY 1 DESC
LIMIT 1);
d5. - Obtened para cada ubicacin que est incluida en otra zona y que no tenga en oferta
ningn piso, el nombre, la ubicacin y la ciudad.
SELECT name, ubication, city
FROM Zone LEFT JOIN Flat ON Flat.Zone = Zone.ZoneCode
WHERE flatCode IS NULL AND
includedIn IS NOT NULL;
Ejercicio 2 (45%)
a. Siguiendo el documento 'Ejemplo carga de datos', cread la tabla 'loadIbexIntradia (en
PostgreSQL) con los nombres de los campos que aparecen en la cabecera del fichero
'ibexIntradia.txt' y cargad los datos.
Adjuntad los SQL utilizados para crear el SCHEMA de la base de datos, para crear la tabla, para
realizar la carga de los datos y una captura de pantalla con el resultado de una SELECT que
retorne el nmero total de registros cargados.
NOTA:
- Cread un SCHEMA llamado p15 y definid la tabla en l.
- Al crear la tabla no se debe aadir ninguna restriccin a ningn campo, ni crear clave
primaria.
Creacin del SCHEMA:
CREATE SCHEMA p15;
SET search_path TO p15, "$user", public;
Obtened los valores del IBEX que han tenido la mxima y mnima variacin (en Euros) a
lo largo del periodo que se estudia. Para cada valor, se desea obtener el nombre del
valor, el importe mnimo y el mximo importe, y la diferencia porcentual entre dichos
valores.
Mostrad la consulta SQL y una captura de pantalla con los resultados de la misma.
(SELECT name, MAX(last), MIN(last), TRUNC(((max(maxCot)-min(minCot))/min(minCot)*100),2) AS dif
Formato de entrega
Se debern entregar dos documentos; uno en formato editable (ODT, DOC, RTF o SXW) y el
mismo convertido a formato PDF.
No comprimis los ficheros (ni ZIP, ni RAR, etc), ni entreguis ficheros adicionales al documento
(esquemas, capturas de pantalla...), todo se debe incluir en el documento principal.
El nombre del documento debe seguir el formato: BD_PEC2_Apellido1Nombre.extensin y debe
constar vuestro nombre y apellidos al principio de la PEC.
La PEC se entregar a travs del apartado 'Evaluacin' del aula correspondiente.
La fecha mxima de entrega son las 23h 59m (GMT+4) del mircoles da 08/04/2015