Practicas Adicionales y Soluciones
Practicas Adicionales y Soluciones
Practicas Adicionales y Soluciones
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
Autor
Priya Vennapusa
Colaboradores
Tcnicos y Revisores
Editor
t
c
Pr
Nancy Greenberg
Priya Nathan
Andrew Brannigan
Angelika Krupp
Brian Boxx
Christopher Lawless
Joel Goodman
Malika Marghadi
Marjolein Dekkers
Stefan Grenstad
Zarko Cesljas
Rosita Hanoman
Ruediger Steffan
Joseph Fernandez
ic
as
es
ne
al
on
ci
di
A
y
o
ci
lu
So
Contenido
Prefacio
Introduccin
Objetivos I-2
Objetivos del Curso I-3
Visin General del Curso I-4
Aplicacin del Curso 1-5
Resumen I-6
as
ic
t
c
Pr
es
ne
al
on
ci
di
o
ci
lu
So
iii
Pr
as
ic
t
c
es
ne
al
on
ci
di
o
ci
lu
So
iv
as
ic
t
c
Pr
es
ne
al
on
ci
di
o
ci
lu
So
Recuperacin Jerrquica
Objetivos 7-2
Ejemplo de Datos de la Tabla EMPLOYEES 7-3
Estructura de rbol Natural 7-4
Consultas Jerrquicas 7-5
Desplazamiento por el rbol 7-6
Desplazamiento por el rbol: De Abajo Arriba 7-8
Desplazamiento por el rbol: De Arriba Abajo 7-9
Clasificacin de Filas con la Pseudocolumna LEVEL 7-10
Formato de Informes Jerrquicos mediante LEVEL y LPAD 7-11
Eliminacin de Ramas 7-13
as
ic
t
c
Pr
es
ne
al
on
ci
di
o
ci
lu
So
vi
Resumen 7-14
Prctica 7: Visin General 7-15
8
t
c
Pr
ic
as
ne
o
ci
es
al
on
ci
di
lu
So
vii
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
viii
_______________
Prcticas
Adicionales
_______________
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
as
SPECIAL_SAL
ic
t
c
Pr
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado las sentencias DML y DDL en la Leccin 2 y la Leccin 3.
Nota: Ejecute los archivos de comandos lab_ap_cre_special_sal.sql,
lab_ap_cre_sal_history.sql y lab_ap_cre_mgr_history.sql de la
carpeta de prcticas para crear las tablas SPECIAL_SAL, SAL_HISTORY y
MGR_HISTORY.
1. El departamento de recursos humanos desea obtener una lista de empleados mal
pagados, el historial salarial de los empleados y el historial salarial de los supervisores
basndose en una encuesta salarial de la industria. Le han pedido que haga lo
siguiente:
Escriba una sentencia para:
- Recuperar los detalles de identificador de empleado, fecha de contratacin,
salario e identificador de supervisor de los empleados cuyo identificador es
mayor o igual que 200 en la tabla EMPLOYEES.
- Si el salario es menor que 5.000 dlares, insertar los detalles de identificador de
empleado y salario en la tabla SPECIAL_SAL.
- Insertar los detalles de identificador de empleado, fecha de contratacin y
salario en la tabla SAL_HISTORY.
- Insertar los detalles de identificador de empleado, identificador de supervisor y
salario en la tabla MGR_HISTORY.
2. Consulte las tablas SPECIAL_SAL, SAL_HISTORY y MGR_HISTORY para ver los
registros insertados.
es
ne
o
ci
lu
al
on
ci
di
So
SALARY_HISTORY
10
Pr
3. La DBA necesita que cree una tabla, que tiene una restriccin de clave primaria, pero
quiere que al ndice se le asigne un nombre diferente al de la restriccin. Cree la tabla
LOCATIONS_NAMED_INDEX basada en el siguiente diagrama de instancia de tabla.
Asigne al ndice de la columna PRIMARY KEY el nombre LOCATIONS_PK_IDX.
Deptno
Dname
Primary Key
Yes
Data Type
Number
VARCHAR2
Length
30
ic
t
c
Column Name
as
es
ne
al
on
ci
di
A
y
o
ci
lu
So
11
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
12
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
13
t
c
Pr
Chile/Easter Island
ic
as
di
So
es
al
on
ci
ne
o
ci
lu
14
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
15
as
ic
t
c
Pr
11. Los beneficios para el estado de California han cambiado por culpa de nuevas leyes
locales. Por ese motivo, el representante de beneficios le ha pedido que compile una
lista de las personas afectadas.
Escriba una consulta para mostrar el identificador de empleado y los apellidos de los
empleados que trabajan en el estado de California.
Indicacin: Utilice subconsultas escalares.
es
ne
al
on
ci
di
A
y
o
ci
lu
So
16
as
ic
t
c
Pr
12. La DBA quiere eliminar informacin antigua de la base de datos. Una de las cosas
que considera innecesarias son los registros de empleados antiguos. Le ha pedido que
haga lo siguiente:
Escriba una consulta para suprimir la fila JOB_HISTORY ms antigua de un
empleado buscando MIN(START_DATE) en la tabla JOB_HISTORY del empleado.
Suprima los registros nicamente de los empleados que han trabajado al menos en dos
puestos diferentes.
Indicacin: Utilice un comando DELETE correlacionado.
13. El vicepresidente de recursos humanos necesita los registros de empleo completos
para su discurso anual de reconocimiento a los empleados. Recibe una rpida llamada
telefnica suya en la que le dice que no siga las rdenes de la DBA.
Haga rollback de la transaccin.
14. La inactividad en la economa est obligando a los supervisores a tomar medidas de
reduccin de costos. El director general desea revisar los puestos mejor pagados de la
compaa. Le ha solicitado una lista que se base en las siguientes especificaciones:
Escriba una consulta para mostrar los identificadores de puesto de los puestos cuyo
salario mximo est por encima de la mitad del salario mximo de toda la compaa.
Utilice la clusula WITH para escribir esta consulta. Asigne a la consulta el nombre
MAX_SAL_CALC.
al
on
ci
di
o
ci
lu
So
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado la recuperacin jerrquica.
15. Lex De Haan va a dejar la compaa. Su sustituto quiere informes de sus
subordinados directos.
Escriba una sentencia SQL para mostrar el nmero de empleado, el apellido, la fecha
de inicio y el salario, que muestre:
a. Subordinados directos de De Haan
es
ne
17
as
ic
t
c
Pr
17. El director general necesita un informe jerrquico sobre todos los empleados. Le ha
proporcionado los siguientes requisitos:
Genere un informe jerrquico para mostrar el nmero de empleado, el nmero de
supervisor, la pseudocolumna LEVEL y el apellido del empleado. Para todas las filas
de la tabla EMPLOYEES, debe imprimir una estructura de rbol que muestre el
empleado, el supervisor del empleado, el supervisor de ese supervisor y as
sucesivamente. Utilice sangrados para la columna NAME.
al
on
ci
di
A
y
o
ci
lu
So
Nota: La salida que se muestra no es ms que un ejemplo. No se incluyen todas las filas de
la salida real.
es
ne
18
_______________
Soluciones a
las Prcticas
Adicionales
_______________
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So
19
t
c
Pr
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado las sentencias DML y DDL en la Leccin 2 y la Leccin 3.
Nota: Ejecute los archivos de comandos lab_ap_cre_special_sal.sql,
lab_ap_cre_sal_history.sql y lab_ap_cre_mgr_history.sql de la
carpeta de prcticas para crear las tablas SPECIAL_SAL, SAL_HISTORY y
MGR_HISTORY.
1. El departamento de recursos humanos desea obtener una lista de empleados mal
pagados, el historial salarial de los empleados y el historial salarial de los supervisores
basndose en una encuesta salarial de la industria. Le han pedido que haga lo
siguiente:
Escriba una sentencia para:
- Recuperar los detalles de identificador de empleado, fecha de contratacin,
salario e identificador de supervisor de los empleados cuyo identificador es
mayor o igual que 200 en la tabla EMPLOYEES.
- Si el salario es menor que 5.000 dlares, insertar los detalles de identificador de
empleado y salario en la tabla SPECIAL_SAL.
- Insertar los detalles de identificador de empleado, fecha de contratacin y
salario en la tabla SAL_HISTORY.
- Insertar los detalles de identificador de empleado, identificador de supervisor y
salario en la tabla MGR_HISTORY.
as
ic
INSERT ALL
WHEN SAL < 5000 THEN
INTO special_sal VALUES (EMPID, SAL)
ELSE
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID, hire_date HIREDATE,
salary SAL, manager_id MGR
FROM employees
WHERE employee_id >=200;
al
on
ci
di
o
ci
lu
So
es
ne
3. La DBA necesita que cree una tabla, que tiene una restriccin de clave primaria, pero
quiere que al ndice se le asigne un nombre diferente al de la restriccin. Cree la tabla
LOCATIONS_NAMED_INDEX basada en el siguiente diagrama de instancia de tabla.
Asigne al ndice de la columna PRIMARY KEY el nombre LOCATIONS_PK_IDX.
Column Name
Deptno
Dname
Primary Key
Yes
Data Type
Number
VARCHAR2
Length
30
t
c
Pr
ic
as
di
So
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado las mejoras de la clusula GROUP BY.
es
al
on
ci
ne
o
ci
lu
COLUMN
COLUMN
COLUMN
COLUMN
SELECT
Pr
as
ic
t
c
al
on
ci
di
lu
So
SELECT
department_id,job_id,manager_id,max(salary),
min(salary)
FROM
employees
GROUP BY GROUPING SETS
((department_id,job_id), (job_id,manager_id));
es
ne
o
ci
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado las funciones de fecha/hora.
Trabaja en una compaa global y el nuevo vicepresidente de operaciones quiere conocer
las diferentes zonas horarias de todas las sucursales de la compaa. Ha solicitado la
siguiente informacin:
7. Modifique la sesin para definir NLS_DATE_FORMAT en DD-MON-YYYY
HH24:MI:SS.
ALTER SESSION
SET NLS_DATE_FORMAT = DD-MON-YYYY HH24:MI:SS;
8. a.
Escriba consultas para mostrar los offsets de zona horaria (TZ_OFFSET) para
las siguientes zonas horarias.
- Australia/Sydney
SELECT TZ_OFFSET (Australia/Sydney) from dual;
Chile/Easter Island
SELECT TZ_OFFSET (Chile/EasterIsland) from dual;
b.
c.
Pr
t
c
as
d.
ic
di
So
al
on
ci
lu
e.
o
ci
es
f.
ne
Nota
Observe en la pregunta que CURRENT_DATE, CURRENT_TIMESTAMP y
LOCALTIMESTAMP son todos sensibles a la zona horaria de la sesin. Observe que
SYSDATE no es sensible a la zona horaria de la sesin.
Los resultados de la pregunta anterior se basan en una fecha diferente y en algunos
casos no se correspondern con los resultados reales obtenidos por los alumnos.
Adems, el offset de zona horaria de los diferentes pases puede variar, segn el
horario de verano.
9. El departamento de recursos humanos quiere una lista de empleados a la espera de
revisin en enero; as que le han solicitado lo siguiente:
Escriba una consulta para mostrar los apellidos, el mes de la fecha de contratacin y la
fecha de contratacin de los empleados que han sido contratados en el mes de enero,
independientemente del ao de contratacin.
t
c
Pr
ic
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado las subconsultas avanzadas.
as
10. El director general necesita un informe sobre las tres personas que ms ganan en la
compaa para el reparto de beneficios. Le ha pedido que le proporcione una lista.
Escriba una consulta para mostrar las tres personas que ms ganan de la tabla
EMPLOYEES. Muestre los apellidos y los salarios.
So
al
on
ci
o
ci
lu
di
es
ne
11. Los beneficios para el estado de California han cambiado por culpa de nuevas leyes
locales. Por ese motivo, el representante de beneficios le ha pedido que compile una
lista de las personas afectadas. Escriba una consulta para mostrar el identificador de
empleado y los apellidos de los empleados que trabajan en el estado de California.
Indicacin: Utilice subconsultas escalares.
t
c
Pr
12. La DBA quiere eliminar informacin antigua de la base de datos. Una de las cosas
que considera innecesarias son los registros de empleados antiguos. Le ha pedido que
haga lo siguiente:
Escriba una consulta para suprimir la fila JOB_HISTORY ms antigua de un
empleado buscando MIN(START_DATE) en la tabla JOB_HISTORY del empleado.
Suprima los registros nicamente de los empleados que han trabajado al menos en dos
puestos diferentes.
Indicacin: Utilice un comando DELETE correlacionado.
as
ic
al
on
ci
di
o
ci
lu
So
es
ROLLBACK;
ne
t
c
Pr
WITH
MAX_SAL_CALC AS (SELECT job_title, MAX(salary) AS
job_total
FROM employees, jobs
WHERE employees.job_id = jobs.job_id
GROUP BY job_title)
SELECT job_title, job_total
FROM MAX_SAL_CALC
WHERE job_total > (SELECT MAX(job_total) * 1/2
FROM MAX_SAL_CALC)
ORDER BY job_total DESC;
as
ic
Los siguientes ejercicios se pueden utilizar como prctica adicional despus de haber
estudiado la recuperacin jerrquica.
15. Lex De Haan va a dejar la compaa. Su sustituto quiere informes de sus
subordinados directos.
Escriba una sentencia SQL para mostrar el nmero de empleado, el apellido, la fecha
de inicio y el salario, que muestre:
a.
Subordinados directos de De Haan
al
on
ci
di
b.
o
ci
lu
So
es
ne
16. Escriba una consulta jerrquica para mostrar el nmero de empleado, el nmero de
supervisor y el apellido de empleado de todos los empleados que estn dos niveles por
debajo del empleado De Haan (empleado nmero 102). Muestre tambin el nivel
del empleado.
SELECT employee_id, manager_id, level, last_name
FROM employees
WHERE LEVEL = 3
CONNECT BY manager_id = PRIOR employee_id
START WITH employee_id = 102;
t
c
Pr
17. El director general necesita un informe jerrquico sobre todos los empleados. Le ha
proporcionado los siguientes requisitos:
Genere un informe jerrquico para mostrar el nmero de empleado, el nmero de
supervisor, la pseudocolumna LEVEL y el apellido del empleado. Para todas las filas
de la tabla EMPLOYEES, debe imprimir una estructura de rbol que muestre el
empleado, el supervisor del empleado, el supervisor de ese supervisor y as
sucesivamente. Utilice sangrados para la columna NAME.
as
ic
es
ne
al
on
ci
di
A
y
o
ci
lu
So
as
ic
t
c
Pr
es
ne
al
on
ci
di
A
y
o
ci
lu
So