Está en la página 1de 4

1.

Hallar por orden de número de empleado el nombre y salario total (salario más
comisión) de los empleados cuyo salario total supera a 2500 € mensuales.
Ordenado por apellidos. (0,5 puntos)
SELECT nomem, salar+coalesce(comis,0) as Salario_Total
FROM Temple
WHERE salar+coalesce(comis,0)>2500
ORDER BY nomem;

2. Obtener el número de departamentos que hay en el centro de la calles Atocha cuyo


presupuesto sea mayor de 9000€. (0,5 puntos)
select count(*)
from tcentr, tdepto
where tcentr.numce=tdepto.numce AND presu>=9 AND senyas like '%ATO%';

3. Obtener el presupuesto de los departamentos de la calle Alcalá y el total de todos ellos en


una sola consulta. (1 punto)
SELECT nomde, presu
FROM tdepto d, tcentr c
WHERE d.numce=c.numce and senyas like '%ALCAL%'
UNION
SELECT 'Total' , sum(presu)
FROM tdepto d, tcentr c
WHERE d.numce=c.numce and senyas like '%ALCAL%'
GROUP BY d.NUMCE;

4. Obtener la fecha de cumleaños de todos los empleados nacidos en el mes de mayo con el
formato: dd de mayo de año, dia_semana. (1 punto)
Select nomem, TO_CHAR (fecna, 'DD "de mayo de" YYYY')
from temple
where extract(month from fecna)=5;

5. En el caso de que haya empleados en la empresa cuyo salario supere los 3400 € mensuales,
Visualiza el nombre y fecha de incorporación de los directores de departamento. Cada
nombre debe aparecer una sola vez aunque dirija varios departamentos. (1,5 punto)
SELECT distinct temple.nomem, temple.fecin
FROM tdepto, temple
WHERE tdepto.direc=temple.numem and exists (SELECT * FROM temple WHERE salar>3400);

6. Para los departamentos en los que la antigüedad media de sus empleados supera
a la de la empresa, hallar el salario medio. (1,5 punto)
SELECT avg(salar) AS media
FROM temple
WHERE numde IN (SELECT numde FROM ( SELECT numde, avg(CURRENT_TIMESTAMP-
fecin) AS t
FROM temple
GROUP BY numde ) as Subconsulta WHERE t > (SELECT avg(CURRENT_TIMESTAMP-fecin)
FROM temple))
7. Escribe las sentencias necesarias para crear las tablas ‘Alumnos’ ‘Asignaturas’ ‘Notas’ que
tienes en la página siguiente. Las líneas representan las relaciones entre las tablas. (4 puntos)

CREATE TABLE ALUMNOS (


DNI numeric NOT NULL,
APENOM integer NOT NULL,
DIREC integer NOT NULL,
POBLA integer NOT NULL,
TELEF integer NOT NULL,
CONSTRAINT alumnos_pkey primary key (DNI));

CREATE TABLE NOTAS (


DNI numeric NOT NULL,
COD numeric NOT NULL,
NOTA numeric NOT NULL,
CONSTRAINT notas_pkey primary key (DNI));

CREATE TABLE ASIGNATURAS (


COD numeric NOT NULL,
NOMBRE integer NOT NULL,
CONSTRAINT ASIGNATURAS_PKEY primary key (COD));

ALTER TABLE NOTAS


add constraint fkey
foreign key (COD)
references ASIGNATURAS (COD);
A partir del esquema GEO que tienes en el APÉNDICE resuelve las siguientes consultas.:
8.- Visualiza en una misma consulta el número de poblaciones de la provincia de Valencia que
comienzan por Beni (ej. Benifairó) y el número de poblaciones de Castellón que comienzan
por Al
(ej. Almenara) (2 p)
SELECT count (poblacions.nom), comarques.provincia
FROM poblacions, comarques
WHERE comarques.provincia='València' AND poblacions.nom LIKE 'Beni%' AND
poblacions.comarca=comarques.nom
GROUP BY comarques.provincia
UNION
SELECT count (poblacions.nom), comarques.provincia
FROM poblacions, comarques
WHERE comarques.provincia='Castelló' AND poblacions.nom LIKE 'Al%' AND
poblacions.comarca=comarques.nom
GROUP BY comarques.provincia

9,- Obtén las comarcas con más de 10.000 habitantes. (2 p)


SELECT sum (poblacio), comarca
FROM poblacions
GROUP BY comarca
HAVING sum (poblacio)>= 10000

10.- Sacar las comarcas y el número de institutos de cada comarca, incluso


de aquellas que no tengan ninguno. (2 p)
SELECT COMARCA, COUNT (INSTITUTS.CODI)
FROM POBLACIONS LEFT JOIN INSTITUTS ON
POBLACIONS.NOM=LOCALITAT
GROUP BY COMARCA

11.- Crea una vista llamada ‘PROVINCIAS’ que nos muestre cada una de las tres
provincias con el número total de habitantes y el número de institutos que tiene. (2
p)
AMBAS SOLUCIONES SON CORRECTAS ELIGE UNA
_________________________________________________________________
CREATE VIEW PROVINCIAS AS
SELECT PROVINCIA, SUM(poblacio) AS habitantes,SUM(Q) AS institutos
FROM (COMARQUES INNER JOIN POBLACIONS ON COMARQueS.nom=comarca) LEFT JOIN
(SELECT localitat, count(*) AS Q FROM INSTITUTS GROUP BY localitat) I
ON POBLACIONS.nom=I.localitat
GROUP BY PROVINCIA;
_________________________________________________________________
create or replace view provinciaspob as
select provincia, sum (poblacio)
from comarques c,poblacions p
where c.nom=p.comarca
group by provincia;
create or replace view ies_prov as
select codi,provincia
from comarques c,poblacions p,instituts i
where c.nom=p.comarca and i.localitat=p.nom;
select p.provincia,sum,count(codi)
from provinciaspob p,ies_prov i
where p.provincia=i.provincia
group by p.provincia,sum;
_________________________________________________________________
12.- A partir de la vista PROVINCIAS haz una consulta que nos muestre este resultado:
-Donde Promedio es el número de habitantes por cada IES.- (2 p)
Provincia Habitantes Institutos Promedio
IES_Habitantes
"Castelló" 527368 39 "13,522.26"
"València" 2359021 151 "15,622.66"
"Alacant" 2058460 123 "16,735.45"

Select *, to_char(habitantes/institutos,'99g999g999d99') as
Promedio_IES_Habitantes
from PROVINCIAS

También podría gustarte