Está en la página 1de 7

bd-p3-adicional-actualizada.

pdf

Rooibos

Bases de Datos

2º Grado en Ingeniería Informática

Escuela Politécnica Superior de Córdoba


Universidad de Córdoba

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
PRÁCTICA 3 (adicional)

# EJERCICIO 1
SELECT SUBSTR(v.nombreCompleto, 1, INSTR(v.nombreCompleto, ' ', 1, 1)-1) "NOMBRE
VOTANTE", l.nombre "LOCALIDAD", p.comunidad
FROM votantes v, localidades l, provincias p
WHERE v.localidad = l.idLocalidad AND l.provincia = p.idProvincia;

# EJERCICIO 2
SELECT l1.nombre || ' va antes que ' || l2.nombre "Ordenacion"
FROM localidades l1, localidades l2
WHERE l2.idLocalidad = l1.idLocalidad+1;

# EJERCICIO 3
-- Segundo votante de más edad
SELECT localidad
FROM votantes
WHERE fechaNacimiento = (SELECT MIN(fechaNacimiento)
FROM votantes
WHERE fechaNacimiento > (SELECT MIN(fechaNacimiento)
FROM votantes));

-- Localidades con más habitantes que los habitantes de la localidad del segundo votante de
más edad
SELECT l.nombre
FROM localidades l
WHERE l.numeroHabitantes > (SELECT numeroHabitantes
FROM localidades
WHERE idLocalidad = (SELECT localidad
FROM votantes
WHERE fechaNacimiento = (SELECT MIN(fechaNacimiento)
FROM votantes
WHERE fechaNacimiento > (SELECT MIN(fechaNacimiento)
FROM votantes))));

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9380491

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
# EJERCICIO 4
--Supongamos mayoría de edad 30 años, ya que en la BD son todos mayores de 18
SELECT v.nombreCompleto, v.localidad, DECODE((SELECT 1
FROM votantes
WHERE dni = v.dni AND

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
(sysdate-fechaNacimiento)/365 > 30),
1, 'mayor edad', 'menor edad') "mayoria edad"
FROM votantes v
WHERE v.localidad IN(2,4,8)
ORDER BY 3

# EJERCICIO 5
SELECT l.nombre "LOCALIDAD", l.numeroHabitantes, p.comunidad
FROM localidades l, provincias p
WHERE l.provincia = p.idProvincia
AND l.provincia IN(1, 2, 3)
AND l.numeroHabitantes > ANY(SELECT numeroHabitantes
FROM localidades
WHERE provincia = 4);

# EJERCICIO 6
-- Participaciones medias
SELECT AVG(COUNT(votante)) "PARTICIPACIONES MEDIAS"
FROM consultas
GROUP BY votante;

-- Participaciones de cada votante


SELECT COUNT(*) "PARTICIPACIONES"
FROM consultas
GROUP BY votante;

-- Solución
SELECT v.nombreCompleto
FROM votantes v, consultas c
WHERE v.dni = c.votante
HAVING COUNT(*) < (SELECT AVG(COUNT(votante))
FROM consultas
GROUP BY votante)
GROUP BY v.nombreCompleto;

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9380491

Las descargas sin publicidad se realizan con las coins


Bases de Datos

Banco de apuntes de la
# EJERCICIO 7
-- Media de estudiosSuperiores
-- Media de estudiosSuperiores
SELECT AVG(DECODE(v.estudiosSuperiores, 'Ninguno', 0, 'Basicos', 1, 'Superiores', 2,
'Doctorado', 3)) "ESTUDIOSSUPERIORES"

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
FROM votantes v, localidades l
WHERE v.localidad = l.idLocalidad;

-- Solución mostrando todas las localidades


SELECT l.nombre "LOCALIDADES", (SELECT AVG(DECODE(v.estudiosSuperiores,
'Ninguno', 0, 'Basicos', 1, 'Superiores', 2, 'Doctorado', 3))
FROM votantes v
WHERE v.localidad = l.idLocalidad
) "ESTUDIOSSUPERIORES"
FROM localidades l
ORDER BY 2 desc;

-- Solución mostrando solo las localidades con votantes


SELECT l.nombre “LOCALIDADES”, AVG(DECODE(v.estudiosSuperiores,
'Ninguno', 0, 'Basicos', 1, 'Superiores', 2, 'Doctorado', 3)) "ESTUDIOSSUPERIORES"
FROM localidades l, votantes v
WHERE v.localidad = l.idLocalidad
GROUP BY l.nombre
ORDER BY 2 desc;

# EJERCICIO 8
-- Estudios superiores medio de localidades
SELECT AVG(DECODE(v.estudiosSuperiores,
'Ninguno', 0, 'Basicos', 1, 'Superiores', 2, 'Doctorado', 3)) "ESTUDIOSSUPERIORES"
FROM votantes v, localidades l
WHERE v.localidad = l.idLocalidad
GROUP BY l.idLocalidad;

-- Estudios superiores medio por provincia


SELECT AVG(DECODE(v.estudiosSuperiores,
'Ninguno', 0, 'Basicos', 1, 'Superiores', 2, 'Doctorado', 3)) "ESTUDIOSSUPERIORES"
FROM votantes v, localidades l, provincias p
WHERE v.localidad = l.idLocalidad AND l.provincia = p.idProvincia
GROUP BY p.idProvincia;

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9380491

Las descargas sin publicidad se realizan con las coins


-- Solucion final
SELECT l.idLocalidad
FROM localidades l, votantes v
WHERE l.idLocalidad = v.localidad
HAVING AVG(DECODE(v.estudiosSuperiores,
'Ninguno', 0, 'Basicos', 1, 'Superiores',
2, 'Doctorado', 3)) > ALL(SELECT AVG(DECODE(v.estudiosSuperiores,
'Ninguno', 0, 'Basicos', 1, 'Superiores', 2, 'Doctorado', 3))
FROM votantes v, localidades l, provincias p
WHERE v.localidad = l.idLocalidad AND l.provincia = p.idProvincia
GROUP BY p.idProvincia)
GROUP BY l.idLocalidad;

# EJERCICIO DEL PROFESOR


-- Muestra todas las localidades y el número de votantes parados
SELECT v.localidad, (SELECT COUNT(dni)
FROM votantes
WHERE situacionLaboral = 'Parado'
AND localidad = v.localidad) "PARADOS"
FROM votantes v
GROUP BY v.localidad;

-- Muestra las localidades con parados y el número de parados


SELECT v.localidad, count(v.dni) "PARADOS"
FROM votantes v
WHERE v.situacionLaboral = 'Parado'
GROUP BYv.localidad;

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9380491

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.

También podría gustarte