Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Base de Datos 000004, Ejercicios de Informática

trabajo sobre, base de datos, formacion profesional, detallado al máximo y corregido con buena nota.

Tipo: Ejercicios

2023/2024

Subido el 21/02/2024

yusef-amar-chalhi
yusef-amar-chalhi 🇪🇸

1 documento

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
YUSEF AMAR CHALHI
Enunciado
La tarea consiste en realizar consultas en SQL sobre el Sistema de Información descrito a
continuación:
Una empresa está organizada en Departamentos.
Cada departamento se ubica físicamente en un Centro de trabajo, pudiendo contener un
Centro más de un Departamento.
Cada departamento tiene un director que es un empleado de la empresa y puede
desempeñar el cargo en Propiedad o en Funciones.
Cada departamento depende de otro departamento, excepto el de más alto nivel, que no
depende de ninguno.
Cada departamento tiene a su cargo a varios departamentos, excepto los departamentos
de más bajo nivel, de los cuales no depende ninguno.
Cada empleado tiene una categoría que lleva asociada un complemento de Julio y otro
de Navidad, y pertenece a un departamento.
De los Centros interesa almacenar el código, que es único para cada Centro, Dirección
y localidad.
De los Departamentos interesa almacenar el código, que es único para cada dpto., y la
siguiente información: Denominación, Centro en el que está ubicado, departamento del
que depende, en el caso de dependa e alguno, Empleado jefe, Tipo de empleado jefe (si
es en propiedad o en funciones, y presupuesto asignado.
De los Empleados interesa almacenar el código, que es único para cada empleado, y la
siguiente información nombre, ap1, ape2, dirección, localidad, teléf., Departamento en
el que trabaja, categoría que tiene, comisión (solo la tendrán algunos empleados, otros
tendrán nulos) , y salario
De las Categorías interesa almacenar el código, que es único para cada Categoría, la
denominación de categoría y el importe de paga extra de julio y el importe de
septiembre.
En el script BD04_Tarea_creadptoyCarga.sql, contenido en el PDF del enlace, tienes las
sentencias para crear el usuario c##dpto. con clave dpto. y las tablas y añadir datos para probar las
sentencias SQL que se piden en la tarea. PDF con sentencias script creadptoyCarga.sql
Crea un script con las sentencias del pdf y ejecútalo. El script conecta como administrador con “sys
as sysdba”, crea el usuario c##dpto., las tablas e inserta contenido en ellas.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga Base de Datos 000004 y más Ejercicios en PDF de Informática solo en Docsity!

YUSEF AMAR CHALHI

Enunciado

La tarea consiste en realizar consultas en SQL sobre el Sistema de Información descrito a continuación:

  • Una empresa está organizada en Departamentos.
  • Cada departamento se ubica físicamente en un Centro de trabajo, pudiendo contener un Centro más de un Departamento.
  • Cada departamento tiene un director que es un empleado de la empresa y puede desempeñar el cargo en Propiedad o en Funciones.
  • Cada departamento depende de otro departamento, excepto el de más alto nivel, que no depende de ninguno.
  • Cada departamento tiene a su cargo a varios departamentos, excepto los departamentos de más bajo nivel, de los cuales no depende ninguno.
  • Cada empleado tiene una categoría que lleva asociada un complemento de Julio y otro de Navidad, y pertenece a un departamento.
  • De los Centros interesa almacenar el código, que es único para cada Centro, Dirección y localidad.
  • De los Departamentos interesa almacenar el código, que es único para cada dpto., y la siguiente información: Denominación, Centro en el que está ubicado, departamento del que depende, en el caso de dependa e alguno, Empleado jefe, Tipo de empleado jefe (si es en propiedad o en funciones, y presupuesto asignado.
  • De los Empleados interesa almacenar el código, que es único para cada empleado, y la siguiente información nombre, ap1, ape2, dirección, localidad, teléf., Departamento en el que trabaja, categoría que tiene, comisión (solo la tendrán algunos empleados, otros tendrán nulos) , y salario
  • De las Categorías interesa almacenar el código, que es único para cada Categoría, la denominación de categoría y el importe de paga extra de julio y el importe de septiembre. En el script BD04_Tarea_creadptoyCarga.sql, contenido en el PDF del enlace, tienes las sentencias para crear el usuario c##dpto. con clave dpto. y las tablas y añadir datos para probar las sentencias SQL que se piden en la tarea. PDF con sentencias script creadptoyCarga.sql Crea un script con las sentencias del pdf y ejecútalo. El script conecta como administrador con “sys as sysdba”, crea el usuario c##dpto., las tablas e inserta contenido en ellas.

Obtén el diagrama del modelo relacional siguiendo los pasos del enlace Obtención del modelo entidad relación a partir de las tablas con SQLDeveloper para entender bien el esquema, sus tablas y la relación entre ellas. Como tarea realiza los siguientes requerimientos en SQL.

  1. Obtener los nombres y salarios de los empleados con más de 1000 euros de salario por orden alfabético. Select nombre, salario from empleado where salario >1000 order by nombre ASC;
  1. Obtener una listado ordenado por años en la empresa con los nombres, y apellidos de los empleados y los años de antigüedad en la empresa Select nombre, ape1, ape2, trunc(months_between(current_date,fechaingreso)/12) as duracion from empleado order by duracion desc;
  2. Obtener el nombre de los empleados que trabajan en un departamento con presupuesto superior a 50.000 euros. Hay que usar predicado cuantificado Select nombre, coddpto from empleado where coddpto =any (select coddpto from dpto where presupuesto >50000);
  3. Obtener los nombres y apellidos de empleados que más cobran en la empresa.Considerar el salario más la comisión, Select nombre, ape1, ape2, salario +comision as total from empleado where salario =(select max(salario) from empleado);
  1. Obtener en orden alfabético los nombres de empleado cuyo salario es inferior al mínimo de los empleados del departamento 1. Select nombre, salario from empleado where salario <(select min(salario) from empleado where coddpto=’1’);
  2. Obtener los nombre de empleados que trabajan en el departamento del cuál es jefe el empleado con código Select nombre from empleado where coddpto= (select coddpto from dpto where codemplejefe =1) and codemple !=1;
  3. Obtener los nombres de los empleados cuyo primer apellido empiece por las letras p, q, r, s. Select nombre from empleado where ape1 like ‘P%’ or ape1 like ‘Q%’ or ape1 like ‘R%’ or ape1 like ‘S%’;
  4. Obtener los empleados cuyo nombre de pila contenga el nombre JUAN. Select nombre from empleado where upper(nombre) like ‘%JUAN%’;
  5. Obtener los nombres de los empleados que viven en ciudades en las que hay algún centro de trabajo Select nombre from empleado where upper(localidad) in (select upper(localidad) from centro);

Select nombre, ape1, ape2 from empleado where salario =(select max(salario) from empleado);

  1. Obtener las localidades y número de empleados de aquellas en las que viven más de 3 empleados Select localidad, count(*) from empleado group by localidad;
  2. Obtener para cada departamento cuántos empleados trabajan, la suma de sus salarios y la suma de sus comisiones para aquellos departamentos en los que hay algún empleado cuyo salario es superior a 1700 euros. Select d.coddpto, d.denominacion,count(e.codemple) as empleados,sum(e.salario) as tot_salario, sum(e.comision) as tot_comision from empleado e join dpto d on(e.coddpto=d.coddpto) where e.coddpto in(select coddpto from empleado where salario >1700) group by d.coddpto, d.denominacion;
  3. Obtener el departamento que más empleados tiene Select denominacion from dpto d join empleado e on d.coddpto=e.coddpto group by denominacion having count())= all (select count () from empleado group by coddpto);
  4. Obtener los nombres de todos los centros y los departamentos que se ubican en cada uno,así como aquellos centros que no tienen departamentos los centros no tienen nombre) Select c.codcentro, c.localidad, d.denominacion, d.coddpto from dpto d join centro c on (d.codcentro=c.codcentro);
  1. Obtener el nombre del departamento de más alto nivel, es decir, aquel que no depende de ningún otro. Select codcentro, denominacion from dpto where coddptodepende is null;
  2. Obtener todos los departamentos existentes en la empresa y los empleados (si los tiene) que pertenecen a él. Select d.coddpto, d.denominacion, e.nombre from empleado e join dpto d on(e.coddpto=d.coddpto);
  3. Obtener un listado en el que aparezcan todos los departamentos existentes y el departamento del cual depende,si depende de alguno. Select coddpto, denominacion, case when coddptodepende=1 then ‘Direccion’ when coddptodepende=5 then ‘central comercial’ else ‘no depende de otro departamento’ end as departamento from dpto;

Select nombre, ape1, ape2, trunc(months_between(current_date,fechaingreso)/12) as duracion, case when (trunc(months_between(current_date,fechaingreso)/12)) between 6 and 10 then ’ euros’ when (trunc(months_between(current_date,fechaingreso)/12)) between 11 and 20 then ’70 euros’ else ‘100 euros’ end as gratificacion from empleado;

  1. Obtener un listado de los empleados, ordenado alfabéticamente, indicando cuánto le corresponde de gratificación. Select nombre, ape1, ape2, trunc(months_between(current_date,fechaingreso)/12) as duracion, case when (trunc(months_between(current_date,fechaingreso)/12)) between 6 and 10 then ’ euros’ when (trunc(months_between(current_date,fechaingreso)/12)) between 11 and 20 then ’70 euros’ else ‘100 euros’ end as gratificacion from empleado order by nombre asc;
  2. Obtener a los nombres, apellidos de los empleados que no son jefes de departamento. Select nombre, ape1, ape2 from empleado where codemple not in(select codemplejefe from dpto);