Anda di halaman 1dari 4

UNIVERSIDAD MARIANA

FACULTAD INGENIERA PROGRAMA INGENIERA DE SISTEMAS

PRCTICA DE BASES DE DATOS


NIVEL 5 HOJA DE TRABAJO - CALIFICABLE
Objetivos
1.

Nmero de participantes

Resolver problemas que tienen


que ver con la consulta y
modificacin de informacin en
una base de datos

Duracin de la actividad

Materiales

Internet
PostgreSQL
Procesador de texto

01:30

INSTRUCCIONES
1. Estudie el diagrama conceptual lgico que acompaa a este laboratorio
2. En postgreSQL cree una base de datos con nombre N5_L4 y en ella restaure (restore) el
backup que acompaa a este laboratorio.
3. Para cada problema llenar la tabla de la consulta, construir la instruccin SQL de la solucin y
la consulta de prueba.
a. [0.5] El departamento de publicidad requiere un informe consolidado de ventas, de las
diferentes marcas de mviles, el reporte debe contener la marca, y por cada una de
ellas el promedio de costos de mviles, la cantidad de mviles y el costo total de los
mviles vendidos. En el informe deben aparecer primero las marcas que ms cantidad
de mviles han vendido. Ejecute la consulta en postgresql y llame al script puntoA.sql
Registros afectados 7.
Consulta
Campos Ma.nombre, avg(m.valor), count(m.id_movil), sum(m.valor)
Tablas
Marca ma , mvil m, modelo mo
Condicio
nes

Filtros
Relacio
nes

ma.id_marca=mo.id_marca and
mo.id_modelo=m.id_modelo

Grupos Ma.nombre
Condiciones de
grupo
Ordenamientos Count(m.id_movil) desc;
Instruccin SQL Select
ma.nombre,
avg(mo.valor),
sum(m.valor)
from marca ma, mvil m, modelo mo
where ma.id_marca=mo.id_marca and
mo.id_modelo=mo.id_modelo
group by ma.nombre
order by count(m.id_movil) desc;

count(m.id_movil),

b. [1.0] La empresa de telefona mvil UFF ha decidido iniciar una campaa de tarifas
especiales para el prximo ao a las personas, para ello requiere un informe con el
nombre de la persona, la ciudad donde vive, fecha de nacimiento, la cantidad de
mviles que tiene y el dinero total que representan esos mviles. Esta vez la empresa
nicamente realizar la campaa a las personas nacidas en enero de cualquier ao. En
el reporte primero deben aparecer las personas que ms tienen mviles. Ejecute la
consulta en postgresql y llame al script puntoB.sql. Registros afectados 9.
Consulta
Campos P.nombre_completo,
persona.ciudad,
persona.fecha_nacimiento,
COUNT(mvil.id_persona),

Condicio
nes

SUM(mvil.valor)
Tablas Persona , movil
Filtros
extract(month from persona.fecha_nacimiento) = 01

Relacio
nes
movil.id_persona=persona.id_persona
Grupos persona.nombre_completo,
persona.ciudad,
persona.fecha_nacimiento
Condiciones de
grupo
Ordenamientos count(movil.id_persona) desc;
Instruccin SQL
Select
persona.nombre_completo,
persona.ciudad,
persona.fecha_nacimiento,
count(movil.id_persona),
sum(movil.valor)
from persona, movil
where extract(month from persona.fecha_nacimiento) = 01
and
movil.id_persona=persona.id_persona
group
by
persona.nombre_completo,
persona.ciudad,
persona.fecha_nacimiento
order by count(movil.id_persona) desc;

c. [1.5] Por Halloween, la empresa ha decidido disminuir en un 5% los valores de los


servicios y aumentarles 2 meses la caducidad a los servicios que si tengan fecha de
caducidad. El beneficio nicamente ser para las personas nacidas en 1970 o nacidas el
31 de cualquier mes y ao. Ejecute la consulta en postgresql y llame al script
puntoC.sql. Registros afectados 906.
Consulta DE CAMBIO DE INFORMACIN
Operacin Update
Tabla Servicio
Informacin a cambiar
Campos a actualizar
Informacin nueva
valor
Valor-valor*0.05
Fecha_caducidad
Fecha_caducidad= fecha_caducidad+60
Fecha_caducidad
Is null
Filtros o condiciones
fecha_caducidad= fecha_caducidad + 60,
valor= valor-(valor*0.05)
where fecha_caducidad is not null and
id_movil in (select id_movil
from movil, persona
where (extract(year from
persona.fecha_nacimiento) = 1970 or
extract(day from
persona.fecha_nacimiento) = 31 )and
movil.id_persona=persona.id_persona)

Instruccin SQL
update servicio
set fecha_caducidad= fecha_caducidad + 60,
valor= valor-(valor*0.05)
where fecha_caducidad is not null and
id_movil in (select id_movil

from movil, persona


where (extract(year from
persona.fecha_nacimiento) = 1970 or
extract(day from
persona.fecha_nacimiento) = 31 )and
movil.id_persona=persona.id_persona)
Consulta de prueba
select *
from servicio
where fecha_caducidad is not null and
id_movil in (select id_movil
from movil, persona
where (extract(year from
persona.fecha_nacimiento) = 1970 or
extract(day from
persona.fecha_nacimiento) = 31 )and
movil.id_persona=persona.id_persona)

d. [2.0] La DIAN solicit a la empresa UFF un archivo de datos con la siguiente


informacin:
Dato
Longit
Alineacin y descripcin
ud
Ciudad de la persona
30 Izquierda completada con espacios
Nombre completo de persona
100 Izquierda completada con espacios
Direccin de la persona
100 Izquierda completada con espacios
Cantidad
de
mviles
10 Derecha completada con ceros
comprados
Valor total de los mviles
15 Derecha completada con ceros
comprados
Promedio de valor total de
15 Derecha completada con ceros
mviles comprados
Primera fecha de activacin de
40 Izquierda completada con espacios.
servicios activados
En formato Day DD Month YYYY, pista: en el
siguiente link se encuentra cmo dar formato
personalizado a las fechas:
http://www.techonthenet.com/postgresql/functions/to
_char.php

Dato
Ciudad de la persona
Nombre
completo
de
persona
Direccin de la persona
Cantidad
de
mviles
comprados
Valor total de los mviles
comprados
Promedio de valor total
de mviles comprados
Primera
activacin
activados

Solicion
Alineacin y descripcin
Select rpad(persona.ciudad,30, )||
rpad(persona.nombre_completo,100,)||
Rpad(persona.direccion,100,)||
Lpad(COUNT(mvil.id_persona)::text,10,0)||
Lpad(SUM(mvil.valor)::text,15,0)||

Lpad(AVG(mvil.valor)::text,15,0)||
rpad(to_char(servicio.fecha_activacion.Day
DD Month
YYYY),40, )
fecha
de From persona, mvil, servicio
de servicios Where persona.id_persona= mvil.id_persona and
Servicio.id_servicio = mvil.id_persona
Group by persona.ciudad, persona.nombre_completo,
persona.direccion, servicio_activacion
Order by CIUNT(mvil.id_persona) DESC;

Primero deben aparecer las personas con ms mviles y ms accesorios comprados. Tome la
decisin sobre el tipo (fijo o variable) de archivo plano de datos a genera y su nombre y

ubicacin. llame al script puntoD.sql. Registros afectados 10.

Anda mungkin juga menyukai