reporte 07 bases de datos

12
Universidad Nacional Autónoma de México Facultad de Ingeniería Bases de Datos PRACTICA 7: LA INSTRUCCIÓN SELECT (DATA QUERY LANGUAGE: DQL) Grupo: 03 Alumnos: Panfilo Rockefeller Anastasio Rothschild Fecha de entrega: 26/Mayo/2015

Upload: oliver-jordy-perez-escamilla

Post on 12-Apr-2016

9 views

Category:

Documents


0 download

DESCRIPTION

LA INSTRUCCIÓN SELECT (DATA QUERY LANGUAGE: DQL)

TRANSCRIPT

Page 1: Reporte 07 Bases de Datos

Universidad Nacional Autónoma de México

Facultad de Ingeniería

Bases de Datos

PRACTICA 7:LA INSTRUCCIÓN SELECT (DATA QUERY LANGUAGE: DQL)

Grupo: 03

Alumnos:

Panfilo Rockefeller

Anastasio Rothschild

Fecha de entrega: 26/Mayo/2015

Por mi raza hablará el espíritu. OBJETIVO

Page 2: Reporte 07 Bases de Datos

Entender y reafirmar los conceptos aprendidos en clase, asociados con el diseño de sentencias SQL tipo SELECT aplicadas en la explotación de un caso de estudio, iniciando desde el proceso de diseño, implementación, hasta la recuperación de los datos empleando sentencias con la cláusula SELECT.

RESOLUCIÓN DE LOS EJERCICIOSGenere una sentencia SQL que muestre los datos solicitados en cada punto.

1. select a.nombre, a.clave_articulo, a.status_articulo_id from articulo a join articulo_famoso af on a.articulo_id=af.articulo_id where nombre_completo='William Harvey';

2. select articulo_id, nombre, clave_articulo from articulo join articulo_donado using (articulo_id) join pais p using(pais_id) join status_articulo sa using (status_articulo_id) where p.descripcion='BELGICA' and sa.clave='ENTREGADO';

3. select articulo_id,a.nombre, a.precio_inicial, sv.precio_venta, a.tipo_articulo, s.nombre, s.fecha_inicio from subasta s join articulo a using (subasta_id) join subasta_venta sv using (articulo_id) join cliente c using (cliente_id) join factura_cliente fc using (factura_cliente_id) where c.nombre='MARICELA' and c.apellido_paterno='PAEZ' and c.apellido_materno='MARTINEZ' and '2010'=to_char(s.fecha_inicio,'YYYY') and factura_cliente_id is not null;

4. select c.nombre, c.apellido_paterno, c.apellido_materno, tarjeta_cliente_id, mes_vigencia, anio_vigencia from cliente c join tarjeta_cliente using (cliente_id) where mes_vigencia<=05 and anio_vigencia<=15;

Page 3: Reporte 07 Bases de Datos

5. select a.nombre, a.clave_articulo, a.precio_inicial, anio_hallazgo, sv.precio_venta from articulo a join articulo_arqueologico aa on aa.articulo_id=a.articulo_id left outer join subasta_venta sv on sv.articulo_id=a.articulo_id where precio_inicial>800000;

6. select nombre, apellido_paterno, apellido_materno, email, tipo_tarjeta from cliente c , tarjeta_cliente tc where c.cliente_id=tc.cliente_id(+) and ocupacion='ABOGADO';

Page 4: Reporte 07 Bases de Datos

7. select articulo_id, nombre, clave_articulo, precio_inicial, status_articulo_id from articulo whereprecio_inicial>900000intersectselect articulo_id, nombre, clave_articulo, precio_inicial, status_articulo_id from articulo wherestatus_articulo_id=1;

8. select cliente_id, nombre, apellido_paterno, apellido_materno, compras, monto_total from cliente c join (select count(*) as compras, sum(precio_venta) as monto_total, cliente_id from subasta_venta group by cliente_id having count(*)>5unionselect count(*) as compras, sum(precio_venta) as monto_total, cliente_id from subasta_venta sv group by cliente_id having sum(precio_venta)>=3000000) using (cliente_id);

Page 5: Reporte 07 Bases de Datos

9. select a.articulo_id, a.nombre, a.clave_articulo, a.status_articulo_id, aa.anio_hallazgo, 2015 - aa.anio_hallazgo as antiguedad from articulo a join articulo_arqueologico aa on aa.articulo_id=a.articulo_id join status_articulo sa on a.status_articulo_id=sa.status_articulo_idwhere sa.clave='REGISTRADO' and aa.anio_hallazgo<=1865;

10. select nombre, tipo_articulo from articulo where nombre like '%Colonial%' or descripcion like '%Colonial%'

11. select status_articulo_id, tipo_articulo, count(*) as num_articulos from articulo join status_articulo using (status_articulo_id) where clave='VENDIDO' or clave='ENTREGADO' group by (status_articulo_id, tipo_articulo);

12. select s.nombre as nombre_subasta, s.fecha_inicio, s.lugar, a.tipo_articulo, sum(precio_venta) as monto_total from articulo a join subasta s using(subasta_id) join subasta_venta using (articulo_id) where '2009'=to_char(fecha_inicio,'YYYY') group by tipo_articulo, lugar, fecha_inicio, s.nombreorder by sum(precio_venta);

Page 6: Reporte 07 Bases de Datos

13. select subasta_id, s.nombre, s.fecha_inicio, a.nombre, a.clave_articulo, max_precio_venta from subasta s join articulo a using (subasta_id) join subasta_venta sv using (articulo_id) join (select subasta_id, max(precio_venta) as max_precio_venta from articulo a join subasta s using (subasta_id) join subasta_venta sv using (articulo_id) where '01-10'=to_char(fecha_inicio,'MM-YY') or '03-10'=to_char(fecha_inicio,'MM-YY') or '06-10'=to_char(fecha_inicio,'MM-YY') group by subasta_id) using (subasta_id) where max_precio_venta=precio_venta;

14. select sum(precio_venta) as total_facturado from cliente c join subasta_venta sv using (cliente_id) join factura_cliente using (factura_cliente_id) where c.nombre='GALILEA' and c.apellido_paterno='GOMEZ' and c.apellido_materno='GONZALEZ' and fecha_factura=(select max(fecha_factura) from (select fecha_factura from cliente c join subasta_venta sv using (cliente_id) join factura_cliente using (factura_cliente_id) where c.nombre='GALILEA' and c.apellido_paterno='GOMEZ' and c.apellido_materno='GONZALEZ'));

Page 7: Reporte 07 Bases de Datos

15. select subasta_id, s.nombre, fecha_inicio, count(*) as articulos_vendidos from subasta s join articulo a using (subasta_id) join status_articulo sa using (status_articulo_id) where sa.clave='VENDIDO' group by subasta_id, s.nombre, fecha_inicio having count(*)>3 and '2010'=to_char(fecha_inicio,'YYYY') order by subasta_id;

16. select subasta_id, s.fecha_inicio, a.articulo_id, a.nombre, a.precio_inicial, (select avg(a.precio_inicial) from articulo a join subasta s using (subasta_id) where a.nombre like '%Motocicleta%' and '2010'=to_char(fecha_inicio,'YYYY') and (a.status_articulo_id=3 or a.status_articulo_id=4)) as costo_promedio from subasta s join articulo a using (subasta_id) join status_articulo sa using (status_articulo_id) where (sa.clave='VENDIDO' or sa.clave='ENTREGADO') and '2010-07'=to_char(fecha_inicio,'YYYY-MM') and a.nombre like '%Motocicleta%';

17. select pais_id, p.descripcion, count(*) from pais p join articulo_donado using (pais_id) join articulo using (articulo_id) where precio_inicial>=300000 group by pais_id, p.descripcion having count(*)>=3;

18. select subasta_id, s.nombre, sum(precio_venta) as monto_total from (select subasta_id,nombre,fecha_inicio, fecha_fin from subasta s where

Page 8: Reporte 07 Bases de Datos

'2010'=to_char(fecha_inicio,'YYYY') and '2010'=to_char(fecha_fin,'YYYY')) s join articulo a using (subasta_id) join subasta_venta sv using (articulo_id) group by subasta_id, s.nombre, s.fecha_fin having sum(precio_venta)>=3000000;

19. Sintaxis estándarselect q3.ff,q3.nt,q3.cn,q3.cap,q3.cam,q3.pv,q3.pi,q3.pv-q3.pi as dif_precio,q3.an,q3.ca,q3.ta,ad.pais_id as clave_pais,anio_hallazgo,q3.nombre_completo as artista from articulo_donado ad right outer join(select a_id,aa.anio_hallazgo,q2.nombre_completo,q2.ff,q2.nt,q2.cn,q2.cap,q2.cam,q2.pv,q2.pi,q2.an,q2.ca,q2.ta from articulo_arqueologico aa right outer join(select a_id,af.nombre_completo,ff,nt,cn,cap,cam,pv,pi,an,ca,ta from articulo_famoso af right outer join (select a.articulo_id as a_id,fc.fecha_factura as ff,tc.numero_tarjeta as nt,c.nombre as cn,c.apellido_paterno as cap,c.apellido_materno as cam,sv.precio_venta as pv, a.precio_inicial as pi,a.nombre as an,a.clave_articulo as ca, a.tipo_articulo as ta from factura_cliente fc jointarjeta_cliente tc on fc.tarjeta_cliente_id=tc.tarjeta_cliente_id join cliente c on tc.cliente_id=c.cliente_id joinsubasta_venta sv on c.cliente_id=sv.cliente_id join articulo a on sv.articulo_id=a.articulo_id where numero_tarjeta='5681375824866375') q1 on q1.a_id=af.articulo_id) q2 on q2.a_id=aa.articulo_id) q3 on q3.a_id=ad.articulo_id;

Page 9: Reporte 07 Bases de Datos

Sintaxis anteriorselect q3.ff,q3.nt,q3.cn,q3.cap,q3.cam,q3.pv,q3.pi,q3.pv-q3.pi as dif_precio,q3.an,q3.ca,q3.ta,ad.pais_id as clave_pais,anio_hallazgo,q3.nombre_completo as artista from articulo_donado ad,(select a_id,aa.anio_hallazgo,q2.nombre_completo,q2.ff,q2.nt,q2.cn,q2.cap,q2.cam,q2.pv,q2.pi,q2.an,q2.ca,q2.ta from articulo_arqueologico aa,(select a_id,af.nombre_completo,ff,nt,cn,cap,cam,pv,pi,an,ca,ta from articulo_famoso af ,(select a.articulo_id as a_id,fc.fecha_factura as ff,tc.numero_tarjeta as nt,c.nombre as cn,c.apellido_paterno as cap,c.apellido_materno as cam,sv.precio_venta as pv, a.precio_inicial as pi,a.nombre as an,a.clave_articulo as ca, a.tipo_articulo as ta from factura_cliente fc, tarjeta_cliente tc,cliente c,subasta_venta sv,articulo a where fc.tarjeta_cliente_id=tc.tarjeta_cliente_id and tc.cliente_id=c.cliente_idand c.cliente_id=sv.cliente_id and sv.articulo_id=a.articulo_id and numero_tarjeta='5681375824866375') q1 where q1.a_id=af.articulo_id(+)) q2 where q2.a_id=aa.articulo_id(+)) q3 where q3.a_id=ad.articulo_id(+);

20. select c.nombre, c.apellido_paterno, c.apellido_materno, sum(precio_venta) from cliente c join (select * from subasta_venta where factura_cliente_id is null) sv on c.cliente_id=sv.cliente_id group by c.nombre, c.apellido_paterno, c.apellido_materno having sum(precio_venta)>=1000000;

Page 10: Reporte 07 Bases de Datos

CONCLUSIONES

Con esta última práctica del curso aprendimos a explotar los datos de nuestra base a través

de la instrucción SELECT. Esta fue la práctica más compleja del curso, puesto que fue

necesario hacer uso de joins, sentencias de algebra relacional, subquerys, condiciones etc.,

para poder filtrar los resultados deseados, cosa que no fue fácil, pero al finalizar la práctica

obtuvimos un buen aprendizaje y experiencia. No obstante, aunque resolvimos todos los

ejercicios, aún tenemos dudas con respecto a cómo hacer muchas de nuestras sentencias

más cortas y eficientes, ya que, por ejemplo, en el ejercicio 19 la sentencia para obtener los

campos requeridos fue muy extensa y compleja, pero no pudimos idear una mejor solución.

Page 11: Reporte 07 Bases de Datos

REFERENCIAS

1. CCPM; ‘Sistemas Computacionales Avanzados’; Editorial McGraw-Hill, México, D.F., Segunda edición, 2008.