PRACTICAS SOLUCIONADAS
-
Upload
luis-ventura -
Category
Documents
-
view
253 -
download
2
Transcript of PRACTICAS SOLUCIONADAS
-
8/14/2019 PRACTICAS SOLUCIONADAS
1/9
Prctica Leccin 2Restringiendo y ordenando datos
1.- Crear una consulta que despliegue el last name y salary de los empleados que gananms de $12.000. Escribe tu sentencia SQL en un archivo de texto llamado lab2_1.sql.Ejecutar la consulta
SELECTlast_name, salary
FROMemployeesWHEREsalary > 12000;
2.- Crear una consulta que despliegue el last_name del empleado y department numberpara cada nmero de empleado 176
SELECTlast_name , department_numberFROMemployeesWHEREemployee_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 eltexto del archivo nombrado
SELECTlast_name, salaryFROMemployeesWHEREsalary NOTBEETWEEN 5000 AND12000;
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 consultaascendentemente por start date
SELECTlast_name, job_id, start_dateFROMemployeesWHEREhired BEETWEEN 20-FEB-1998 AND1-MAY-1998ORDERBYstart_date ASC;
5.- Desplegar el last name y department number de todos los empleados deldepartamento 20 y 50, ordenar alfabticamente por name
SELECTlast_name, departament_numberFROMemployees
WHERE departament_number IN(20,50)ORDERBYlast_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 poremployee y monthly salary, respectivamente. Regrabar lab2_3.sql como lab2_6.sql.Ejecutar la sentencia en lab2_6.sql
SELECTlast_name ASemployee, salary ASmonthly salaryFROMemployeesWHEREsalary BETWEEN5000 AND12000
ANDdepartament_id in(20,50);
7.- Desplegar el last name y el hire date de cada empleado que ha sido empleado en elao 1994
-
8/14/2019 PRACTICAS SOLUCIONADAS
2/9
SELECTlast_name, hire_dateFROMemployeesWHEREhire_date LIKE%94;
8.- Desplegar el last name y job title de todos los empleados que no tienen unadministrador
SELECTlast_name, job_id
FROMemployeesWHEREmanager_id ISNULL;
9.- Desplegar el last name, salary y commissions para todos los empleados que ganancomisiones. Ordenar datos descendentemente de salary y commisions
SELECT last_name, salary , commission_pctFROMemployeesWHEREcommission_pct ISNOTNULLORDERBYsalary DESC,commission_pct DESC;
10.- Desplegar los last name de todos los empleados donde la tercera letra del nombre esuna a
SELECTlast_nameFROMemployeesWHERElast_name LIKE___a%;
11.- Desplegar el last name de todos los empleados que tienen una a y una e en sulast name
SELECTlast_nameFROMemployeesWHERElast_name LIKE%a% ANDlast_name LIKE%e%;
12 Desplegar el last name, job y salary para todos los empleados que tienen como jobsales representative o stock clerk y cuyo salary no es igual al $2.500, $3.500 o $7.000
SELECTlast_name, job_id, salaryFROMemployeesWHEREjob _sales in(SA_REP, ST_CLERK )ANDsalary NOTin(2500,3500,7000);
13.- Modificar lab2_6.sql para desplegar el last name, salary y comisin para todos losempleados cuya comisin es un 20%. Regrabar lab2_6.sql como lab2_13.sql. Ejecutarla sentencia lab2_13.sql
SELECTlast_name, salary, commission_pctFROMemployeesWHEREcommission_pct = .20;
-
8/14/2019 PRACTICAS SOLUCIONADAS
3/9
-
8/14/2019 PRACTICAS SOLUCIONADAS
4/9
7.- Crear una consulta que despliegue el apellido del empleado, y la cantidad anual desu salario con asteriscos. Cada asterisco significa miles de dlares. Ordenar los datosdescendentemente por salario. Etiquetar la columna como EMPLEADO Y SUSALARIO
12SELECTlast_name, RPAD(' ', salary/1000+1,'*')FROMemployees;
8.- Usando la funcin DECODE, escribir una consulta que despliegue el grado de todoslos empleados basados en los valores de la columna CARGO_ID, como se muestra acontinuacin:
CARGO GRADOAD_PRES AST_MAN BIT_PROG CSA_REP DST_CLERK E
Ninguno de los anteriores 0
123456789
SELECTCARGO_ID, DECODE('AD_PRES','A','ST_MAN','B','IT_PROG','C','SA_REP','D','ST_CLERK','E','0')FROMemployees;
8.- Reescribe la consulta anterior utilizando la clusula CASE.
12345678
SELECTCARGO_ID , CASECARGO_IDWHEN'AD_PRES'THEN'A'WHEN'ST_MAN'THEN'B'WHEN'IT_PROG'THEN'C'WHEN'SA_REP'THEN'D'WHEN'ST_CLERK'THEN'E'ELSE'0'FROMemployees;
-
8/14/2019 PRACTICAS SOLUCIONADAS
5/9
Prctica Leccin 4Desplegando Datos de Mltiples Tablas
1.- Escriba una consulta que despliegue el apellido, nmero y nombre del departamentopara todos los empleados
12
3
SELECTe.last_name, d.departament_id, d.departament_nameFROMemployees e, departaments d
WHEREe.departament_id = d.departament_id;
2.- Crear una nica lista de todos los identificadores de los cargos que estn en eldepartamento 80. Incluir la localizacin del departamento en la salida
1234
SELECTe.job_id , l.location_nameFROMemployees e, locations l, departaments dWHEREe.departament_id = d.departament_id ANDd.location_id =l.location_idANDe.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
1234
SELECTe.last_name, d.departament_name, l.location_id, l.cityFROMemployees e, departaments d , locations lWHEREe.departament_id = d.departament_id ANDd.location_id =l.location_idANDcommission_pct ISNOTNULL;
4.- Desplegar el apellido del empleado y nombre del departamento para todos losempleados que tienen una a minscula en su apellido. Escribir tu sentencia SQL en unarchivo de texto llamado lab4_4.sql
1234
SELECTe.last_name, d.departament_nameFROMemployees e, departaments dWHEREe.departament_id = d.departament_idANDe.last_name LIKE'%a%';
5.- Escribir una consulta que despliegue el apellido, cargo, nmero y nombre dedepartamento para todos los empleados que trabajan en Toronto
12
34
SELECTe.last_name, e.job_id, d.departament_id, d.departament_nameFROMemployees e, departaments d, locations lWHEREe.departament_id = d.departament_id ANDd.location_id =l.location_idANDLOWER(l.city) = LOWER('Toronto');
6.- Desplegar el apellido y nmero del empleado con el apellido de su administrador ynmero 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
123
SELECTe.last_name AS"Empleado", e.employee_id AS"Emp#", a.last_nameAS"Administrador", a.manager_id AS"Mgr#"FROMemployees e, managers aWHEREe.manager_id = a.manager_id;
-
8/14/2019 PRACTICAS SOLUCIONADAS
6/9
Prctica 5
1.- Las funciones de grupo trabajan cruzando muchas filas para producir un resultado(V)(F)
V2.- Las funciones de grupo incluyen nulos en sus clculos (V)(F)
F3.- La clusula WHERE restringe filas antes de la inclusin en un clculo de funcionesde grupo (V)(F)V4.- Desplegar el salario mximo, mnimo, sumatoria, y promedio de todos lostrabajadores. Etiquetar Mximo, Mnimo, Sumatoria, Promedio respectivamente.Redondear los resultados al entero ms prximo. Guardar la consulta como Lab5_4.sql
12
SELECTROUND(MAX(salary),0) AS"Maximo", ROUND(MIN(salary),0) AS"Minimo", ROUND(SUM(salary),0) AS"Sumatoria", ROUND(AVG(salary),0) AS"Promedio"FROMemployees;
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
123
SELECTROUND(MAX(salary),0) AS"Maximo", ROUND(MIN(salary),0) AS"Minimo", ROUND(SUM(salary),0) AS"Sumatoria", ROUND(AVG(salary),0) AS"Promedio"FROMemployees;GROUPBYjod_id;
6.- Escribir una consulta que despliegue el nmero de trabajadores con el mismo cargo.
123
SELECTCOUNT(*)FROMemployeesGROUPBYjob_id;
7.- Determinar el nmero de administradores sin ellos en el listado. Etiquetar lacolumna como Nmero de Administradores
12SELECTCOUNT(DISTINCTmanager_id) AS"Nmero de Administradores"FROMemployees;
8.- Escribir una consulta que despliegue la diferencia entre el salario mximo y mnimo.Etiquetar la columna como diferencia
12SELECT(MAX(salary) - MIN(salary)) AS"diferencia"FROMemployees;
9.- Despliega el identificador del administrador y el salario del empleado que menosrecibe por administrador. Excluir aquellos donde el administrador no es conocido.Excluir cualquier grupo donde el salario mnimo es 6000 o menor. Ordenar la consultadescendentemente por salario
123
SELECTmanager_id ,salaryFROMemlpoyeesWHEREmanager_id ISNOTNULLGROUPBYmanager_id
-
8/14/2019 PRACTICAS SOLUCIONADAS
7/9
456
HAVINGMIN(salary) > 6000ORDERBYMIN(salary) DESC;
10.- Escribir una consulta que despliegue para cada departamento, nombre, nmero deempleados y salario promedio para todos los empleados del departamento. Etiquetar lascolumnas como: Nombre, Localizacin, Numero de personas y Salario respectivamente.Redondear el salario promedio a dos decimales.
1234
SELECTd.departament_name AS"Nombre", COUNT(*) AS"Numero depersonas", ROUND(AVG(salary),2) AS"Salario"FROMdepartaments d, employees eWHEREe.departament_id = d.departament_idGROUPBYd.departament_name;
11.- Crear una consulta que despliegue el nmero total de empleados y el total deempleados contratado en 1995, 1996, 1997 y 1998. Etiquetar con encabezadosapropiados cada columna.
1
23456
SELECTCOUNT(*) AS"Total",SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1995,1,0)) AS"1995",SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1996,1,0)) AS"1996",SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1997,1,0)) AS"1997",SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1998,1,0)) AS"1998"FROMemployees;
12.- Crear una consulta en una matriz que despliegue el cargo, salario, para cada cargobasado en un nmero de departamento y el salario total para cada cargo, para losdepartamentos 20, 50, 80, 90. Dar a cada columna un encabezado apropiado.
12345678
SELECTjob_id,SUM(DECODE(departament_id,20,salary)) AS"Departamento 20",SUM(DECODE(departament_id,50,salary)) AS"Departamento 50",SUM(DECODE(departament_id,80,salary)) AS"Departamento 80",SUM(DECODE(departament_id,90,salary)) AS"Departamento 90",SUM(salary) AS"Salario Total"FROMemployeesGROUPBYjob_id;
-
8/14/2019 PRACTICAS SOLUCIONADAS
8/9
Prctica 6
1.- Escribir una consulta que despliegue el apellido y fecha de contrato de cualquierempleado que trabaje en el mismo departamento que Zlotkey. Excluir a Zlotkey
1234
SELECTlast_name, hire_dateFROMemployeesWHEREdepartament_id = (SELECTdepartament_id FROMemployees WHERElast_name = 'Zlotkey')ANDlast_name 'Zlotkey';
2.- Crear una consulta que despliegue el nmero del empleado y su apellido de aquellosempleados que ganan ms que el salario promedio. Ordenar ascendentemente porsalario1234
SELECTemployee_id, last_nameFROMemployeesWHEREsalary > (SELECTAVG(salary) FROMemployees)ORDERBYsalary ASC;
3.- escribir una consulta que despliegue el nmero del empleado y su apellido deaquellos 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
123
SELECTemployee_id, last_nameFROMemployeesWHEREdepartament_id IN(SELECTdepartament_id FROMemployees WHERELOWER(last_name) LIKE'%u%');
4.- Desplegar el apellido, nmero de departamento e identificador del cargo de todos losempleados cuya localizacin de departamento es 1700
12
3
SELECTlast_name, departament_id, job_idFROMemployeesWHEREdepartament_id in(SELECTdepartament_id FROMdepartaments WHERE
location_id = 1700);
5.- Desplegar el apellido y salario para cada empleado que reporte a King
123
SELECTapellido, salaryFROMemployeesWHEREmanager_id in(SELECTmanager_id FROMemployees WHERELOWER(last_name) = 'king');
6.- Desplegar el nmero de departamento, apellido e identificador del cargo para cadaempleado en el departamento Executive
1
23
SELECTdepartament_id, last_name, job_idFROMemployees
WHEREdepartament_id = (SELECTdepartament_id FROMdepartaments WHEREdepartament_name= 'Executive');
7.- Modificar la consulta lab6-3.sql para desplegar el nmero del empleado, apellido ysalario de todos aquellos empleados que ganan ms que el salario promedio y quetrabaja 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
1234
SELECTemployee_id, last_name, salaryFROMemployeesWHEREdepartament_id IN(SELECTdepartament_id FROMemployees WHERELOWER(last_name) LIKE'%u%')ANDsalary > (SELECTAVG(salary) FROMemployees);
-
8/14/2019 PRACTICAS SOLUCIONADAS
9/9
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 decontrato para todos los empleados que se iniciaron entre un rango dado. Concatenarnombre y trabajo juntos, separado por un espacio y coma, y etiquetar la columna comoEmpleado. En un archivo Script SQL separado, use el comando DEFINE para proveerlos dos rangos. Use el formato MM/DD/YYYY. Grabar los archivos script como lab7-3a.sql y lab7-3b.sql
DEFINE fechaInicio = 01/01/1987DEFINE fechaTermino = 01/01/2007SELECT last_name || ', ' || job_id AS "Empleado" , hire_dateFROM employeesWHERE hire_date BEETWEEN TO_DATE(&fechaInicio,'MM/DD/YYYY')AND TO_DATE(&fechaTermino,'MM/DD/YYYY');