PRACTICAS SOLUCIONADAS

download PRACTICAS SOLUCIONADAS

of 9

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');