You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fase 3: Explotación de la Base de Datos. Operaciones DML
Tarea 1.
El grupo armado que fue el primero en participar en el conflicto que suma un mayor número de muertos y heridos hasta la fecha se ha incorporado hoy al conflicto de causa religiosa en el que más intervenciones mediadoras se han producido por parte de organizaciones mediadoras que no dependen de otras. Inserta el registro adecuado mediante una consulta de datos anexados.
CREATEVIEWsuma_heridos_muertosASSELECT codigo_conflicto, SUM(num_heridos) +SUM(num_muertos) AS sum_her_muer
FROM historial_de_conflictos
GROUP BY codigo_conflicto;
CREATEVIEWtotal_organizacionesASSELECTCOUNT(codigo_org) AS contar_organizaciones
FROM historial_intervenciones_mediadoras
WHERE codigo_org in (SELECT codigo
FROM organizaciones
WHERE codigo_orgdepen IS NULL)
GROUP BY codigo_conflicto;
INSERT INTO historial_intervenciones_armadas(codigo_gruparmado,codigo_conflicto,fecha_incorporacion)
SELECT (SELECT codigo_gruparmado
FROM historial_intervenciones_armadas
WHERE codigo_conflicto = (SELECT codigo_conflicto
FROM historial_de_conflictos
GROUP BY codigo_conflicto
HAVINGSUM(num_heridos) +SUM(num_muertos) = (SELECTMAX(sum_her_muer)
FROM suma_heridos_muertos))
AND fecha_incorporacion = (SELECTMIN(fecha_incorporacion)
FROM historial_intervenciones_armadas
WHERE codigo_conflicto = (SELECT codigo_conflicto
FROM historial_de_conflictos
GROUP BY codigo_conflicto
HAVINGSUM(num_heridos) +SUM(num_muertos) = (SELECTMAX(sum_her_muer)
FROM suma_heridos_muertos))
GROUP BY codigo_conflicto)),
(SELECT codigo_conflicto
FROM historial_intervenciones_mediadoras
WHERE codigo_conflicto in (SELECT codigo
FROM conflictos
WHERE causa ='Religioso')
GROUP BY codigo_conflicto, codigo_org
HAVINGCOUNT(codigo_org) = (SELECTMAX(contar_organizaciones)
FROM total_organizaciones)
AND codigo_org in (SELECT codigo
FROM organizaciones
WHERE codigo_orgdepen IS NULL)),
current_date;
Tarea 2.
Se ha producido un acto de guerra en Kabul con el resultado de 12 muertos y 50 heridos. Dicho acto está relacionado con el conflicto en el que participa el grupo armado “Persa”. Actualiza la base de datos mediante una consulta de actualización.
UPDATE historial_de_conflictos SET num_heridos = num_heridos +50, num_muertos = num_muertos +12WHERE codigo_pais = (SELECT codigo
FROM paises
WHERE capital ='Kabul')
AND codigo_conflicto = (SELECT codigo_conflicto
FROM historial_intervenciones_armadas
WHERE codigo_gruparmado = (SELECT codigo
FROM grupos_armados
WHERE nombre ='Ponchos Rojos'));
Tarea 3.
Muestra el número total de víctimas (muertos y heridos) que han causado los conflictos bélicos en cada país, incluyendo los países en los que no han habido víctimas.
SELECTp.nombreAS"Paises", SUM(num_heridos) AS"Nº de heridos", SUM(num_muertos) AS"Nº de muertos"FROM historial_de_conflictos hc
LEFT JOIN paises p
ONhc.codigo_pais=p.codigoGROUP BYp.codigo;
Tarea 4.
Muestra los campos de refugiados en los que hay más niños que adultos según el último censo efectuado a los que se hayan mandado menos de 10 litros de leche por niño en los últimos tres meses.
SELECT nombre AS"Campos de refugiados"FROM campos_refugiados
WHERE codigo in (SELECTe.codigo_refugioFROM refugiados e
WHERE ((extract(year FROMcurrent_date) - extract(year FROMe.fecha_llegada)) *12) + extract(MONTH FROMcurrent_date) - extract(MONTH FROMe.fecha_llegada) <=3ANDe.edad<'18'GROUP BYe.codigo_refugioHAVINGCOUNT(e.codigo_refugio) > (SELECTCOUNT(codigo_refugio)
FROM refugiados
WHERE ((extract(year FROMcurrent_date) - extract(year FROM fecha_llegada)) *12) + extract(MONTH FROMcurrent_date) - extract(MONTH FROM fecha_llegada) <=3AND edad >'18'AND codigo_refugio =e.codigo_refugioGROUP BY codigo_refugio)
AND codigo_refugio in (SELECT codigo_refugio
FROM paquetes
WHERE nombre_producto ='Leche'GROUP BY codigo_refugio
HAVINGsum(cantidad)/(SELECTCOUNT(e.codigo)
FROM refugiados e
WHERE ((extract(year FROMcurrent_date) - extract(year FROMe.fecha_llegada)) *12) + extract(MONTH FROMcurrent_date) - extract(MONTH FROMe.fecha_llegada) <=3ANDe.edad<'18'GROUP BYe.codigo_refugioHAVINGCOUNT(e.codigo_refugio) > (SELECTCOUNT(codigo_refugio)
FROM refugiados
WHERE ((extract(year FROMcurrent_date) - extract(year FROM fecha_llegada)) *12) + extract(MONTH FROMcurrent_date) - extract(MONTH FROM fecha_llegada) <=3AND edad >'18'AND codigo_refugio =e.codigo_refugioGROUP BY codigo_refugio)) <10));
Tarea 5.
Muestra los nombres de los conflictos en los que se han realizado intervenciones mediadoras tanto en 2013 como en 2014 y en 2015.
SELECT codigo AS"Codigo", nombre AS"Conflicto"FROM conflictos
WHERE codigo in (SELECT codigo_conflicto
FROM historial_intervenciones_mediadoras
WHERE extract(YEAR FROM fecha_incorporacion) ='2013'
INTERSECT
SELECT codigo_conflicto
FROM historial_intervenciones_mediadoras
WHERE extract(YEAR FROM fecha_incorporacion) ='2014'
INTERSECT
SELECT codigo_conflicto
FROM historial_intervenciones_mediadoras
WHERE extract(YEAR FROM fecha_incorporacion) ='2015');
Tarea 6.
Muestra para cada campo de refugiados el total de envíos que incluían leche en polvo que se han realizado en los últimos seis meses.
SELECTcam.nombreAS"Nom. Campo de Refugiado", COUNT(codigo_envio) AS"Total de envios"FROM campos_refugiados cam, paquetes paq
WHEREcam.codigo=paq.codigo_refugioANDpaq.codigo_envioin (SELECTenv.codigoFROM envios env, paquetes paq
WHEREenv.codigo=paq.codigo_envioAND ((extract(year FROMcurrent_date) - extract(year FROM fecha_hora)) *12) + extract(MONTH FROMcurrent_date) - extract(MONTH FROM fecha_hora) <=6ANDUPPER(paq.nombre_producto) ='LECHE EN POLVO')
GROUP BYcam.nombre;
Tarea 7.
Muestra los nombres de los países que están involucrados en el conflicto religioso que lleva activo desde hace más tiempo.
CREATEVIEWconflictos_activosASSELECTMAX(DATEDIFF(current_date, fecha_incorporacion)) AS max_activo
FROM historial_intervenciones_armadas his, conflictos con
WHEREcon.codigo=his.codigo_conflictoANDhis.fecha_retirada IS NULLANDUPPER(con.causa) ='RELIGIOSO'GROUP BY codigo_conflicto;
SELECT nombre AS"Pais"FROM paises
WHERE codigo in (SELECT codigo_pais
FROM historial_de_conflictos
WHERE codigo_conflicto in (SELECT codigo_conflicto
FROM historial_intervenciones_armadas
WHERE DATEDIFF(current_date, fecha_incorporacion) in (SELECTMAX(max_activo)
FROM conflictos_activos)));
Tarea 8.
Muestra el producto envíado en mayor cantidad en cada uno de los envíos realizados por organizaciones mediadores dependientes de la ONU.
CREATEVIEWproducto_mayorASSELECT codigo_envio, sum(cantidad) AS cuenta_producto
FROM paquetes
GROUP BY codigo_envio, nombre_producto;
SELECT codigo_envio AS"Codigo de envio", nombre_producto AS"Producto", sum(cantidad) AS"Cantidad total"FROM paquetes
GROUP BY codigo_envio, nombre_producto
HAVING (codigo_envio, sum(cantidad)) in (SELECT codigo_envio, MAX(cuenta_producto)
FROM producto_mayor
GROUP BY codigo_envio)
AND codigo_envio in (SELECT codigo
FROM envios
WHERE codigo_org in (SELECT codigo
FROM organizaciones
WHERE codigo_orgdepen ='ONU'));
Tarea 9.
Muestra el nombre de las organizaciones mediadoras que no han realizado ningún envío al campo de refugiados más poblado según el último censo realizado en el mismo.
CREATEVIEWmax_pobladoASSELECTCOUNT(codigo) AS total_refugiados
FROM refugiados
WHERE fecha_salida IS NULLGROUP BY codigo_refugio;
SELECT codigo AS"Codigo", nombre AS"Oraganizaciones"FROM organizaciones
WHERE codigo NOT IN (SELECT DISTINCT codigo_org
FROM envios env, paquetes paq
WHEREenv.codigo=paq.codigo_envioAND codigo_refugio = (SELECT codigo_refugio
FROM refugiados
WHERE fecha_salida IS NULLGROUP BY codigo_refugio
HAVINGCOUNT(codigo) = (SELECTMAX(total_refugiados)
FROM max_poblado)));
Tarea 10.
Crea una vista con los nombres de los grupos armados que se han retirado de todos los conflictos en los que han participado junto con la fecha en que se retiraron del último de ellos.
CREATEVIEWmaximas_fechasASSELECTMAX(fecha_retirada) AS max_fecha
FROM historial_intervenciones_armadas
GROUP BY codigo_conflicto;
CREATEVIEWgruparmados_retiradosASSELECTgru.nombreAS"Grupo armado", his.fecha_retiradaAS"Ultima fecha retirada"FROM historial_intervenciones_armadas his, grupos_armados gru
WHEREhis.codigo_gruparmado=gru.codigoAND fecha_retirada IS NOT NULLAND codigo_gruparmado NOT IN (SELECT codigo_gruparmado
FROM historial_intervenciones_armadas
WHERE fecha_retirada IS NULL)
AND fecha_retirada in (SELECTMAX(max_fecha)
FROM maximas_fechas)
GROUP BYgru.nombre, fecha_retirada;