Sie sind auf Seite 1von 9

Prctica Leccin 2 Restringiendo y ordenando datos 1.

- Crear una consulta que despliegue el last name y salary de los empleados que ganan ms de $12.000. Escribe tu sentencia SQL en un archivo de texto llamado lab2_1.sql. Ejecutar la consulta
SELECT last_name, salary FROM employees WHERE salary > 12000;

2.- Crear una consulta que despliegue el last_name del empleado y department number para cada nmero de empleado 176
SELECT last_name , department_number FROM employees WHERE employee_id = 176;

3.- Modificar lab2_1.sql para desplegar el last name y salary para todos los empleados cuyo salario no esta en el rango de $5.000 y $12.000. Escribe tu sentencia SQL en el texto del archivo nombrado
SELECT last_name, salary FROM employees WHERE salary NOT BEETWEEN 5000 AND 12000;

4.- Desplegar el last_name del empleado, job ID y start date de empleados cuya hired (fecha de empleo) est entre Febrero 20, 1998, y Mayo 1, 1998. Ordenar la consulta ascendentemente por start date
SELECT last_name, job_id, start_date FROM employees WHERE hired BEETWEEN 20-FEB-1998 AND 1-MAY-1998 ORDER BY start_date ASC;

5.- Desplegar el last name y department number de todos los empleados del departamento 20 y 50, ordenar alfabticamente por name
SELECT last_name, departament_number FROM employees WHERE departament_number IN(20,50) ORDER BY last_name;

6.- Modificar lab2_3.sql para listar el last name y salary de empleados que ganan entre $5.000 y $12.000 y estn en el departamento 20 o 50. Etiquetar las columnas por employee y monthly salary, respectivamente. Regrabar lab2_3.sql como lab2_6.sql. Ejecutar la sentencia en lab2_6.sql
SELECT last_name AS employee, salary AS monthly salary FROM employees WHERE salary BETWEEN 5000 AND 12000 AND departament_id in (20,50);

7.- Desplegar el last name y el hire date de cada empleado que ha sido empleado en el ao 1994

SELECT last_name, hire_date FROM employees WHERE hire_date LIKE %94;

8.- Desplegar el last name y job title de todos los empleados que no tienen un administrador
SELECT last_name, job_id FROM employees WHERE manager_id IS NULL;

9.- Desplegar el last name, salary y commissions para todos los empleados que ganan comisiones. Ordenar datos descendentemente de salary y commisions
SELECT last_name, salary , commission_pct FROM employees WHERE commission_pct IS NOT NULL ORDER BY salary DESC ,commission_pct DESC;

10.- Desplegar los last name de todos los empleados donde la tercera letra del nombre es una a
SELECT last_name FROM employees WHERE last_name LIKE ___a%;

11.- Desplegar el last name de todos los empleados que tienen una a y una e en su last name
SELECT last_name FROM employees WHERE last_name LIKE %a% AND last_name LIKE %e%;

12 Desplegar el last name, job y salary para todos los empleados que tienen como job sales representative o stock clerk y cuyo salary no es igual al $2.500, $3.500 o $7.000
SELECT last_name, job_id, salary FROM employees WHERE job _sales in(SA_REP, ST_CLERK ) AND salary NOT in(2500,3500,7000);

13.- Modificar lab2_6.sql para desplegar el last name, salary y comisin para todos los empleados cuya comisin es un 20%. Regrabar lab2_6.sql como lab2_13.sql. Ejecutar la sentencia lab2_13.sql
SELECT last_name, salary, commission_pct FROM employees WHERE commission_pct = .20;

Prctica 3 Funciones sobre Filas 1.- Para cada empleado, desplegar el apellido, y calcular el nmero de meses entre la fecha actual y la fecha de contrato. Etiquetar la columna como MESES TRABAJADOS. Ordenar la consulta por el nmero de meses trabajados. Redondear el nmero de meses hasta el entero ms cercano. 1SELECT last_name, ROUND(MONTHS_BEETWEEN(SYSDATE, hire_date),0) AS MESES TRABAJADOS 2FROM employees 3ORDER BY ROUND(MONTHS_BEETWEEN(SYSDATE, hire_date),0); 2.- Escribe una consulta que despliegue lo siguiente para cada empleado < apellido del empleado> recibe <salario> mensualmente, pero quiere recibir <tres veces su salario>. Etiqueta la columna como SALARIO SOADO
last_name || ' recibe ' || salary || ' mensualmente, pero 1SELECT quiere recibir ' || salary *3 AS "SALARIO SOADO" 2FROM employees;

3.- Escriba una consulta que despliegue el apellido, y el salario para todos los empleados. El formato de salario debe ser de 15 caracteres de largo, completar con el comodn $ a la izquierda. Etiquetar la columna como SALARIO. 1SELECT last_name, LPAD(salary,15,'$') AS "SALARIO" 2FROM employees; 4.- Desplegar para cada empleado el apellido, la fecha de contrato, y la fecha de revisin de salario, con el primer lunes despus de seis meses de servicio. Etiquetar la columna como REVISION. El formato de la fecha debe ser similar a Monday, the Thirty-First of July, 2000
SELECT last_name, hire_date,

1TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date,6),'MONDAY'), 'fmDay , "the" 2Ddspth "of" Month, YYYY') AS "REVISION"


FROM employees;

5.- Desplegar el apellido, la fecha de contrato, y el da de la semana en que el empleado inicio su empleo. Etiquetar la columna como DIA.Ordena el resultado por el da de la semana iniciado con el lunes. 1SELECT last_name, hire_date, TO_CHAR(hire_date,'DAY') AS "DIA" 2FROM employees 3ORDER BY TO_CHAR(hire_date - 1 ,'d'); 6.- Crear una consulta que despliegue el apellido del empleado y comisin. Si el empleado no gana comisin, desplegar Sin Comisin Etiquetar la columna como COMM
last_name, NVL(TO_CHAR(commission_pct),'Sin Comisin') AS 1SELECT "COMM" 2FROM employees;

7.- Crear una consulta que despliegue el apellido del empleado, y la cantidad anual de su salario con asteriscos. Cada asterisco significa miles de dlares. Ordenar los datos descendentemente por salario. Etiquetar la columna como EMPLEADO Y SU SALARIO 1SELECT last_name, RPAD(' ' , salary/1000+1,'*') 2FROM employees; 8.- Usando la funcin DECODE, escribir una consulta que despliegue el grado de todos los empleados basados en los valores de la columna CARGO_ID, como se muestra a continuacin: CARGO GRADO AD_PRES A ST_MAN B IT_PROG C SA_REP D ST_CLERK E Ninguno de los anteriores 0 1 2SELECT CARGO_ID, DECODE( 'AD_PRES','A', 3'ST_MAN','B', 4'IT_PROG','C', 5'SA_REP','D', 6'ST_CLERK','E', 7'0' ) 8FROM employees; 9 8.- Reescribe la consulta anterior utilizando la clusula CASE. 1 SELECT CARGO_ID , CASE CARGO_ID 2WHEN 'AD_PRES' THEN 'A' 3WHEN 'ST_MAN' THEN 'B' 4WHEN 'IT_PROG' THEN 'C' 5WHEN 'SA_REP' THEN 'D' 6WHEN 'ST_CLERK' THEN 'E' ELSE '0' 7FROM employees; 8

Prctica Leccin 4 Desplegando Datos de Mltiples Tablas 1.- Escriba una consulta que despliegue el apellido, nmero y nombre del departamento para todos los empleados 1SELECT e.last_name, d.departament_id, d.departament_name 2FROM employees e, departaments d 3WHERE e.departament_id = d.departament_id; 2.- Crear una nica lista de todos los identificadores de los cargos que estn en el departamento 80. Incluir la localizacin del departamento en la salida 1SELECT e.job_id , l.location_name employees e, locations l, departaments d 2FROM WHERE e.departament_id = d.departament_id AND d.location_id = 3l.location_id 4AND e.departament_id = 80; 3.- Escribir una consulta que despliegue el apellido del empleado, nombre del departamento, localizacin y ciudad de todos los empleados que ganan comisin 1SELECT e.last_name, d.departament_name, l.location_id, l.city employees e, departaments d , locations l 2FROM WHERE e.departament_id = d.departament_id AND d.location_id = 3l.location_id 4AND commission_pct IS NOT NULL; 4.- Desplegar el apellido del empleado y nombre del departamento para todos los empleados que tienen una a minscula en su apellido. Escribir tu sentencia SQL en un archivo de texto llamado lab4_4.sql 1SELECT e.last_name, d.departament_name 2FROM employees e, departaments d 3WHERE e.departament_id = d.departament_id 4AND e.last_name LIKE '%a%'; 5.- Escribir una consulta que despliegue el apellido, cargo, nmero y nombre de departamento para todos los empleados que trabajan en Toronto 1SELECT e.last_name, e.job_id, d.departament_id, d.departament_name employees e, departaments d, locations l 2FROM WHERE e.departament_id = d.departament_id AND d.location_id = 3l.location_id 4AND LOWER(l.city) = LOWER('Toronto'); 6.- Desplegar el apellido y nmero del empleado con el apellido de su administrador y nmero de este. Etiquetar las columnas como Empleado, Emp#, Administrador y Mgr#, respectivamente. Escribir tu sentencia SQL en un archivo de texto llamado lab4_6.sql 1SELECT e.last_name AS "Empleado" , e.employee_id AS "Emp#", a.last_name AS "Administrador", a.manager_id AS "Mgr#" 2FROM employees e, managers a 3WHERE e.manager_id = a.manager_id;

Prctica 5 1.- Las funciones de grupo trabajan cruzando muchas filas para producir un resultado (V)(F) V 2.- Las funciones de grupo incluyen nulos en sus clculos (V)(F) F 3.- La clusula WHERE restringe filas antes de la inclusin en un clculo de funciones de grupo (V)(F) V 4.- Desplegar el salario mximo, mnimo, sumatoria, y promedio de todos los trabajadores. Etiquetar Mximo, Mnimo, Sumatoria, Promedio respectivamente. Redondear los resultados al entero ms prximo. Guardar la consulta como Lab5_4.sql
SELECT ROUND(MAX(salary),0) AS "Maximo" , ROUND(MIN(salary),0) AS

1"Minimo", ROUND(SUM(salary),0) AS "Sumatoria", ROUND(AVG(salary),0) AS 2"Promedio"


FROM employees;

5.- Modificar la consulta Lab5_4 para que despliegue el salario mximo, mnimo, sumatoria y promedio para cada tipo de cargo. Guardar la consulta como Lab5_5.sql 1"Minimo", ROUND(SUM(salary),0) AS "Sumatoria", ROUND(AVG(salary),0) AS 2"Promedio" 3FROM employees;
GROUP BY jod_id; SELECT ROUND(MAX(salary),0) AS "Maximo" , ROUND(MIN(salary),0) AS

6.- Escribir una consulta que despliegue el nmero de trabajadores con el mismo cargo. 1SELECT COUNT(*) 2FROM employees 3GROUP BY job_id; 7.- Determinar el nmero de administradores sin ellos en el listado. Etiquetar la columna como Nmero de Administradores 1SELECT COUNT(DISTINCT manager_id) AS "Nmero de Administradores" 2FROM employees; 8.- Escribir una consulta que despliegue la diferencia entre el salario mximo y mnimo. Etiquetar la columna como diferencia 1SELECT (MAX(salary) - MIN(salary)) AS "diferencia" 2FROM employees; 9.- Despliega el identificador del administrador y el salario del empleado que menos recibe por administrador. Excluir aquellos donde el administrador no es conocido. Excluir cualquier grupo donde el salario mnimo es 6000 o menor. Ordenar la consulta descendentemente por salario 1SELECT manager_id ,salary FROM emlpoyees 2WHERE manager_id IS NOT NULL 3GROUP BY manager_id

4HAVING MIN(salary) &gt; 6000 5ORDER BY MIN(salary) DESC; 6 10.- Escribir una consulta que despliegue para cada departamento, nombre, nmero de empleados y salario promedio para todos los empleados del departamento. Etiquetar las columnas como: Nombre, Localizacin, Numero de personas y Salario respectivamente. Redondear el salario promedio a dos decimales. 1SELECT d.departament_name AS "Nombre" , COUNT(*) AS "Numero de ROUND(AVG(salary),2) AS "Salario" 2personas", FROM departaments d, employees e 3WHERE e.departament_id = d.departament_id 4GROUP BY d.departament_name; 11.- Crear una consulta que despliegue el nmero total de empleados y el total de empleados contratado en 1995, 1996, 1997 y 1998. Etiquetar con encabezados apropiados cada columna. 1SELECT COUNT(*) AS "Total" , 2SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1995,1,0)) 3SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1996,1,0)) 4SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1997,1,0)) 5SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1998,1,0)) FROM employees; 6

AS AS AS AS

"1995" , "1996" , "1997" , "1998"

12.- Crear una consulta en una matriz que despliegue el cargo, salario, para cada cargo basado en un nmero de departamento y el salario total para cada cargo, para los departamentos 20, 50, 80, 90. Dar a cada columna un encabezado apropiado. 1 SELECT job_id, 2SUM (DECODE(departament_id,20,salary)) 3SUM (DECODE(departament_id,50,salary)) 4SUM (DECODE(departament_id,80,salary)) 5SUM (DECODE(departament_id,90,salary)) 6SUM(salary) AS "Salario Total" FROM employees 7GROUP BY job_id; 8

AS AS AS AS

"Departamento "Departamento "Departamento "Departamento

20", 50", 80", 90",

Prctica 6 1.- Escribir una consulta que despliegue el apellido y fecha de contrato de cualquier empleado que trabaje en el mismo departamento que Zlotkey. Excluir a Zlotkey 1SELECT last_name, hire_date employees 2FROM WHERE departament_id = (SELECT departament_id FROM employees WHERE 3last_name = 'Zlotkey') 4AND last_name 'Zlotkey'; 2.- Crear una consulta que despliegue el nmero del empleado y su apellido de aquellos empleados que ganan ms que el salario promedio. Ordenar ascendentemente por salario 1SELECT employee_id, last_name 2FROM employees 3WHERE salary &gt; (SELECT AVG(salary) FROM employees) 4ORDER BY salary ASC; 3.- escribir una consulta que despliegue el nmero del empleado y su apellido de aquellos empleados que trabajan en un departamento con cualquier empleado que tenga una u en su apellido. Escribir tu consulta SQL en un texto llamado lab6-3.sql. Ejecutar tu consulta 1SELECT employee_id, last_name FROM employees 2WHERE departament_id IN (SELECT departament_id FROM employees WHERE 3LOWER(last_name) LIKE '%u%'); 4.- Desplegar el apellido, nmero de departamento e identificador del cargo de todos los empleados cuya localizacin de departamento es 1700 1SELECT last_name, departament_id, job_id FROM employees 2WHERE departament_id in (SELECT departament_id FROM departaments WHERE 3location_id = 1700); 5.- Desplegar el apellido y salario para cada empleado que reporte a King 1SELECT apellido, salary FROM employees 2WHERE manager_id in (SELECT manager_id FROM employees WHERE 3LOWER(last_name) = 'king'); 6.- Desplegar el nmero de departamento, apellido e identificador del cargo para cada empleado en el departamento Executive 1SELECT departament_id, last_name, job_id FROM employees 2WHERE departament_id = (SELECT departament_id FROM departaments WHERE 3departament_name= 'Executive'); 7.- Modificar la consulta lab6-3.sql para desplegar el nmero del empleado, apellido y salario de todos aquellos empleados que ganan ms que el salario promedio y que trabaja en un departamento con cualquier empleado en cuyo nombre tenga una u. Regrabar lab6-3.sql como lab6-7.sql. Ejecutar tu archivo lab6-7.sql 1SELECT employee_id, last_name, salary employees 2FROM WHERE departament_id IN (SELECT departament_id FROM employees WHERE 3LOWER(last_name) LIKE '%u%') 4AND salary &gt; (SELECT AVG(salary) FROM employees);

Prctica 7 Determine si las siguientes dos preguntas son verdadera o falsa 1.- La siguiente sentencia es valida: (V) (F) DEFINE & p_val = 100 F

2.- El comando DEFINE es un comando SQL (V) (F) F

3.- Escriba un script para desplegar el apellido de un empleado, cargo y fecha de contrato para todos los empleados que se iniciaron entre un rango dado. Concatenar nombre y trabajo juntos, separado por un espacio y coma, y etiquetar la columna como Empleado. En un archivo Script SQL separado, use el comando DEFINE para proveer los dos rangos. Use el formato MM/DD/YYYY. Grabar los archivos script como lab73a.sql y lab7-3b.sql DEFINE fechaInicio = 01/01/1987 DEFINE fechaTermino = 01/01/2007 SELECT last_name || ', ' || job_id AS "Empleado" , hire_date FROM employees WHERE hire_date BEETWEEN TO_DATE(&amp;fechaInicio,'MM/DD/YYYY') AND TO_DATE(&amp;fechaTermino,'MM/DD/YYYY');

Das könnte Ihnen auch gefallen