Está en la página 1de 21
PRACTICAS SQL (Usuario SCOTT) 7.___ Verlas tablas del esquema SCOTT seuect * FROW cat 2. __ Seleccionar todas las columnas de la tabla de empledos Senger « FROM emp; 3. ‘Seleccionar el nombre, oficio, sueldo y Comision de los empleados (usar alias) SELECT ename nombre, job oficio, sal Salario, comm comision FROM emp: 4, Calcular cuantas semanas completas ha trabajado cada empleado SELECT ename nonbre, FLOOR (sysdate-biredate)/7) semanas FROM emp; O también: SELECT ename nombre, TRUNC((sysdate-hiredate) /7) semanas FROM emp; §. —~ Calcular el sueldo neto de cada empieado, y ia retencion IRPF mensual, sabiendo que la retencion és del 19% para el sueldo y de un 10% de la comisién, (redondear a 2 decimales) SELECT ename nombre, sal salario, NVI (comm, 0) comision, ROUND {(sal*0.19) + (nv (comm, 0) *0,10),2) "Retenclon IRPF*, (seltnvi (comm, 0)~ ROOND {{sa1*0.19)+ {avi (comm, 0)*0.10),2}} "Sueldo Neto” FROM emp; 6. Hacer un listado de empleados con sueldo superior a 1000 SELECT onano nombre, sal salazio FROM emp twHERE 9@1>10007 7. Hacer un listado de empleados (nombre, oficio, sueldo, comision) que tengan oficio igual a ‘CLERK SELECT enane nonbre, job oficio, gal salario,nvl (cama, 0) comision FROM emp WHERE. 3ob="CLERK? ‘8 ___ Hacer un listado de empleados (nombre, oficio, sueldo, comision) que tengan ofcio distinio a CLERK’ SELECT enane nombre, job oficio, sal salario,nvl {conm,0) comision FROW em WHERE NOT job='CLBRK’ [WHERE job<>‘CLERK"] 9. Hacer un listado de empleados (nombre, oficio, sueldo, comision) que tengan oficio "CLERK ’ y sueldo superior a 1500 select enane nonbre, job oficio, sal salario,nvi (comm,0) comlsiox Econ emp where job<>'CLERK* and sal>1500; 10, Hacer un listado de empleados (nombre, oficio, sueldo, comision) que tengan asignada comision SBLECT enane nombre, job oficio, sal salario, com comision FROM exp WHERE comm 28 NOT NOLL; 11. Hacer un listado de empleados (nombre, oficio, sueldo, comision) que NO tengan asignada comision SELECT enane nonbre, job oficio,sal salario,conm comision FROM onp WRERE comm 18 NOLL: 12. Seleccionar los empleados cuyo nombre empieza por ‘A’ SELECT ename nombre FROW emp WHERE ename LIKE ‘AR': 13. Seleccionar los empieados cuyo nombre tienen una A en cualquier posicion SELECT ename nombre FROM emp WHERE ensme LIKE ‘SAS; ‘Seleccionar los empleados cuyo nombre no contiene ninguna ‘A’ fehane nombre FROM eno WHERE onane NOT LIKE "a8"s 18. Seleccionar los empleados cuyo nombre empieza por una vocal SELECT ena©e nombre FROM om WHBRE onama LIKE ‘A$" OR enane LIKE "3" OR ename LIKE "1g" OR ename LIKE ‘08? OR ename LIKE "Ub"; 16. ___ Seleccionar los empleados con sueldo entre 1000 y 2000 (ambos inclusive) SELECT enane nonbre,eal salario FROM emp. WHERE sal BETWEEN 2000 AND 20007 47. Seleccionar ios empieados con sueldo igual a 1000, 2000, 3000, 4000 6 5000 SELECT ename nombre, sal salario RON emp WHERE sal 1N(1000, 2000, 3000, 4000, 5000) + © tambien SELECT ename nombre, sal salario FROM emp WHERE. 9a1~L090 OR 2a1-2000 OR 221-3000 OR 221-4000 OR 221-5000; 18. Seleccionar los empleados cuyo nombre comienza por A.B\C.J,KM SELECT enane nombre, 2a! salario ERON enp WHERE SCBSTR(ename,1,2) IN (1A, 14,41, 106, °K, Mh) 7 19. Seleccionar los empleados cuyo sueldo es la 5000/2 + 500 6 5000-1000 SELECT ename nombre, sal salario FROM emp WIBRE sal IN(5000/2+500, 5000-1000) 7 20. Seleccionar los empleados cuyo sueldo es la 5000/2 + 500 5000-1000 6 el salario maximo de todos los empleados }SLECT eneme nombre, sal salario ROM exp WABRE sal 1N(5000/2+500, 5000-1000, (8: 1OT MAX (sal) FROM emp) ); 21. Seleccionar nombre, sueldo y sueldo formateado de todos los empleados SELEOT ename, sal, TO_CHAR(s81,'999, 939.99") FROM emp? 22, __ Seleccionar nombre, sueldo y sueldo fermateado con el simbolo 'Délar’ de todos los empleados SELECT enane, s@l,T0_CHAR(sal, ?$59,999,99") FROM emp; 23. Seleccionar nombre, sueldo y sueldo formateado con el simbolo ‘Moneda local de todos los empleados SEUECT ename, sai,70_CHAR (sal, "199, 959.99") FROW emp; 24. Seleccionar la fecha del sistema (dia, mes, afio, horas (24), minutos, segundos) SELECT T0_CHAR(sysdate, ‘dd/mn/yyy HH24:MI:99") FROM dual 25. Seleccionar la fecha del sistema (nombre dia, dia, mes, afio, horas (24), minutos, segundos) SELECT TO_CHAR(syscate, 'DAY,dd month yyy HE24:MI:ss") FROM dual; 26. __ Seleccionar la fecha del dia 1 de enero de 2005 , mediante una tira de caracteres y su mascara de formato SELECT TO_DAT(101012005", tddamyyyy"} FROM dual? 27. Calcular el numero de dias vividos por una persona nacida el dia 3 de julio de 1970: SELECT ROUND (SYSDATE-TO_DATE(*03071570", 'ddemyyyy'}) "Dias vividos" FROM duals 28. Calcular el ndmero de segundos transcurridos desde la ultima medianoche SELECT TO_CHAR(SYSDATE, ‘sssss"} FROH dual) 29. Calcular el nero horas completas transcurrido desde la ditima medianoche SELECT TRONC(TO_NUMBER(TO CHAR (sysdate, 'ssss3")) /3600) Horas FROM dual 30. Caicular el numero de meses transcurridos entre la fecha de contratacion de cada empleado y hoy SELECT name nombre, WONTHS BETWEEN (sysdate, hiredate) meses FROM emp: 31. Calcular el ditimo dia del mes (fecha) del mes actual SELECT LAST_DAY (SYSDATE) FROM dual. 32. Calcular el ditimo dia del mes (fecha) de! mes actual, con horas, minutos y segundos SELECT TO_CHAR(LAST_DAY (SYSDATS) , "dd/mn/yyy H24:60 FROW dual? ‘33. Calouiar en qué MES (cifras) se ha contratado cada empieado SELECT enane nombre, hiredate “Fecha contrato", TO_CRAR(hiredate, ‘Mit) “Mes contrato" FROM emp? 34. Caloular cuanto deberia haber cobrado cada empleado en su primer afio de trabajo (desde la fecha de contrato hasta el 12 de diciembre de ese afio) SELECT ename nombre, TO_DATE(*3112"| |TO_CHARIhiredate, 'yyyy')) "31 Dse", TO_DATE(*3112" | |70_CHAR(hiredate, 'yyyy'))~hiredate "Dias ler ato", ((TO_DATE("3112" | |TO_CHAR (hizedate, 'yyyy'))-hiredate) /30)*sal "Devengado ler atic” FROM exp; 35, Cuantos oficios distintos hay en la tabla de empleados i SELEC? DISTINCT Job PROM emp; 36. __Calcular et IRPF de cada empleado, teniendo en cuenta que para los ‘CLERK se les retiene un 15%, ya logs ‘ANAYST' un 20%. Al resto se les retiene un 19%. SELECT ename, sal, job, DECODE (job, 'CLERK', s21¥G,15, 'ANALYST", sal*0.20,se1°0.19) TRPF FROM emp; 37. Efectuar una propuesta de aumento salarial: Para los empleados del Dept. 10 un 5%, Dept. 20 un 7% , Dept 30 un 8% y al resto un 3% del salario SELECT ename, deptno, sal, DECODE (deptnd, 10, 981*0.05, 20, sai*0.07, 30, 9a1*0.08,sa1*0.03) "Aumente mensual” FROM emp: 38. __Listar los nombres de los empleados, identificando como Vendedor si cobra comision, y'No vendedor' si no la cobra SELECT ename nombre, DECODE (comm, NULL, FRON emp? 39. Calcular cuanto se paga mensualmenete a fodos los empleados SELECT SUM(sal) "Salario total” RON emp? 40. Calcular cuantos empleados hay en fa tabla SELECT COUNT(*) FROM emp: 41. Calcular el sueido medio de todos ios empleados NOt, #81") "Vendedor?" SELECT SUM(sal) /counT(*) "Salarfo medio” FROM en: 42. Calcular la comision media de todos los empleados SELECT SUM(conm)/COUNT(*} "Comision media” FROM emp; ‘Comparar con: SELECT SUM(comm) /COUNT{comm) "Comision media” FROM emp; 43. Caleular la comision media de los empieados SELECT AVG(conn) media TRON emp; ‘44. Calcular la suma de los sueldos de los empleados del Departamento 20 SELECT SUM(sal) "Salarios Dpt 20" FRON emp (WERE deptno-20; 45. Calcular el sueldo medio de los empleados que pertenezcan al Dept 10 6 30 SELECT AVG(sal) media ‘emp SELECT AVG(sal) media ROM emp. WHERE deptno 1N(10,30); 46. Calcular la suma de sueldos que se pagan en cada uno de los departamentos 10 y 30 (por separado) ELECT deptno, SUM(sal) "Salario totat” ROM emp wiRH Geptno TH(16, 30) GROUF BY deptno: 47. Calcular cuantos empleados se han contratado cada aio SELECT TO CHAR(hiredate, "Y¥YY") afio,COUNT(*) empleados FROM exp GROUP BY TO_CHAR(hizedate, YY); 48. Calcular el suelo maximo y minimo de dada departSalari maxim | minim de cada departamento SELECT deptno, NAX(sal) "Salerio max", MIN(sal) "Salario min” FROM emp GROUP BY deptno; 49. Galcular cuanto se gana de media por cada oficio. Redondear a 2 decimales SELECT job oficio, ROUND(AVG(sa1),2) "Salario medio" FROM emp GROUP BY job 50. Cuantos dias de vaciones correspondieron a cada empleado el primer afio de trabajo (contando 1 dia por semanaentera trabajada) SELECT eaame nombre, FLOOR ( (70_DATE("3112" || T0_CHAR (hiredate, 'yyyy'))-hiredate) /7) "dies de vacances” FROM emp 51. Qué dia de la semana se contraié a cada empleado SELECT enane nombre, hiredate "Fecha contzato",T0_CHAR(hiredate, 'day') "Dia semana” FROM emp: 52. Calcular la paga de beneficios que corresponde a cada empieado (3 salarios mensuales: incrementados un: 10% para PRESIDENT, 20% para los MANAGER, 30% para el resto) SELEC? enama nombre, job oficio, sal salario, DECODE (job, *PRESIDENT*, sal*3*1.1, 'MANAGER', 2a1*3*1.2,ea143*1,3) "Paga extra" FROM emp; tambien: SELECT ename some, job oficio, sal salario, sa1*3*DECODE (job, 'PRESIDENT', 1.1, "MANAGER",1.2,1.3) "Paga extra” FROM emp; 53. Cuantos dias han pasado desde el 25 julio de 1992, SELECT ROUND(ayadate-TO_DATE("25071992", ‘ddemyyyy'}} "Dias desde 25 jul '92" PROM dual; 54. Seleccionar el producto cartesiano de nombres de empleados y nombres de departamentos: SELECS ename,dnane FROM emp, dept 55. Seleccionar el nombre de cada empleado y el nombre del departamento al que pertenece SELECT enane, dname FROM emp, dept WHERE emp. deptno-dept .deptno 56. Seleccionar el nombre de cada empleado, el nombre del departamento al que pertenece, y el codigo, de departamento del empleado SELECT ename, dname, dept deptno FROM emp, dept WHERE omp. deptnomdept .deptno 57. Seleccionar el nombre de cada empleado, el nombre del departamento al que pertenece, y el codigo de departamento del empleado (ANS!) SELECT enane, cane, ceptno FROM ep NATURAL JOIN dept; 58. Seleccionar nombre del empleado y su grado de salario: SELECT enane, grade FROM emp, salgrade RBERE sal BETWEEN losal AND hisal 59. __ Listar el nombre del empleado y el nombre de su jefe SELECT ¢-enane, j.ename ROM ep c, emp j WHERE c.mgr-}.empno 60. __Listar el nombre del empleado y el nombre de su jefe. Incluir empleados que no tengan jefe SELECT ¢.enane, j.enane FROM emp c, emp 3 WHERE c.mgr=}.empno(# 61. Seleccionar nombre del empleado, nombre del jefe, fechas contrato del trabajador y del jefe, de forma que la fecha de contrato del empleado sea anterior ala de su jefe SELECT c.enane enp,j.ename jefe, c.hiredate “contr. enp', j-hiredate "contr. jefe” FROM emp c,emp j WHERE c.mgi=i.empno AND c.hiredate<} hivedate; 62. Seleccionar nombre del empleado, nombre del jefe, salarios del trabajador y del jefe, de forma que el sueldo del empleado sea inferior a la mitad det salario de su jefe SELECT c.ename empleado, j,ename jefe,c.sal "sal empleado",j.sal "sal jefe" FROM emp cyemp 3 WHERE c.mgr=j-empno AND c.sal2000 81. __Listar el apellido y cod departamento del empleado con id=176 SELECT last_nane apellido, department_id “: FROM employees WHERE employee _id=176; 82. Listar el apellido y sueldo de tos empleados que NO ganan entre 5000 y 12000 SELBCT iget_name, salary FROW employee WERE salary NOT BETWEEN S000 AND 12000; 83. __Listar el apellido, cod oficio y fecha contrato de empleados contratados entre 20 febrero 1998 y 1 de mayo de 1998. Ordenar por fecha SELECT last name, job_id, hiro date FROM employees WHERE hire date BETWEEN '20/02/1998" AND 01/05/1998" ORDER BY hize date ASC; 84. Listar el apellido y cod departamento de los empleados pertenecientes a los departamentos 20 0 50. ‘Ordenar por apellido SELECT last_nane, department_id FROM employees WHERE department _id 1 ORDER BY last_naite; (20,50) ‘85. __Listar el apeliido (alias: Empleado) y sueldo (alias: Salario mensual) de los empleados pertenecientes a los departamentos 20 0 60, que ganen entre 5000 y 12000. SELECT last_name "Empleado", salary "Salario mensual” FROM employees WHERE salary BETWEEN 5000 aND 12000 AND department_id IN (20, 50)+ 86. _Listar el apellido y fecha contrato de empleados contratados el afio 1994 SELECT last_name, nize date FROM employées WHERE 10_CHAR (hire date, "yyyy") = "199447 87. __Listar el apellido, cod oficio de empleados sin jefe asignado SELECT last_name,job_id FROM enployees WHERE manager_id TS NULL; 88. _Listar el apellido, sueldo y % comision de los empleados que cobran comision. Ordenar por salario y comisién, de forma que los mas altos salgan primero SELECT last name, salary, commission pet FRO employées HERE conmission pet 1S NOT NULL ORDER BY salary DESC, comnission_pct DESC: 89. _Listar el apellido de los empleados que tengan una’a’ en la 3a letra del apellido SELECT last_name FROM employees WHERE last_name Uias ‘_as'; 90. Listar el apeliido de los empleados que tengan una ‘a’ y una’‘e'en el apellido SELECT lest_nane "ROM employees WHERE last_name LIKE "828? AND last name LIKE ‘tet 91. ——_Listar el apellido, cod oficio, sueldo de empleados ‘CLERK’ 0 'SA_REP’, y con salario distinto de: 2500, 3500, 7000 SELECT Last_name, job_id, salary FROM employees WABRE (Job_id ="ST_CLERK’ OR Job _; AND salary NOT 1N(2500, 3500, 7000); "sa REP") 82. Listar el apeliido (alias: Empleado), sueldo (alias: Salario mensual) y % comision de los empleados ‘cuyo % comision sea del 20% SELECT last_nene "Eupleado", salary "Salario weneual", connisaion pot FROM employees WHERS commission _petw0.2; 93. —_Listar el apellido y salario de los empleados, de forma que estén separados por una linea de puntos, y que de extremo a extremo haya 30 caracteres SELECT RPAD(Last_name,20,*.") |JLPAD|salary,10,".") FROM employees; 94. _Listar los apellidos de los empleados, reemplazando la latra ‘a’ por un 1" SELECT REPLACE (Last_name, "a", "1") FROM employees; 95. Obtener la fecha del sistema (alias: Fecha) en el formato por defecto SELECT sysdate "Fecha" FROM dual; 96. Listar el id, apelido y salario de los empleados, y el salario incrementado un 15%, redondeado (alias: Nuevo salario) SELECT employee_id, last_name, salary,ROUND(salary*l.15) "Nuevo salar FROM employees 97. __Listar el id, apellido y salario de los empleados, é! salario incrementado un 15%, redondeado (alias: Nuevo salario) y la cuantia del incremento (alias: Incremento) SELECT employee_id, last_nane, salary, ROUND (salary*i.18) "Nuevo salarion, ROUND (salary*0.15) "Increment" FROM employees; 98. Listar el apellido y longitud del apellido de los empleados cuyo nombre empiece por A. 6 M. Ordenar por apeliido, (Los apellidos tendran la inicial en mayuscula y el resto en minusculas) SELECT INTTCAP(last_name) Name, length (last_name) Length FRON employees WHERE last_name LIKE 'Re* last_name LIKE '3¢ lastoname LIKE ‘a? ORDER BY Last_names 89. —_Listar el apellido ndmero de meses trabajados, redondeando al entero superior. Ordenar por ndmero de meses trabajados, de menor a mayor SELECT Pane, CBI (MONTHS BETWEEN (sysdate, hire dete)) MESES FROM employees ORDER BY 2 ; 100. Componer una frase con el apeliido, salario actual y el tiple del salario de los empleados Por ejemplo: 'Pepe gana 1000 mensuales, pero le gustaria ganar 3000’. (alias: Sueldos sofiados) SELECT last_name/|’ gana '||salaryl| ‘ mensuales, pero querria ganar ‘| |salary*3 "Sueldos soflados”™ FROM employees; 101. _Listar el apellido y salario de los empleados, rellenando por la izquierda hasta 15 caracteres con el simbolo'$ SELECT last_name, LPAD( FROM enployaes; 102. Listar apeliido, fecha contrato y fecha revision contrato de los empleados, sabiendo que seré el lunes siguiente a la fecha que cumple 6 meses de trabajo en la empresa. Formatear esta fecha de acuerdo on el ejemplo: ‘Lunes, 12th de noviembre de 2005' SELECT last_nane,hire date, TO_CHAR{NEXT_DAY ((ADD_MONTHS (hire date,6)),1),"DAY ", " ddspth * de " MONTH Y¥YY") Rev FRON employees; ary, 15,'9") salary 103. _Listar apellido, fecha contrato y dia de ia semana en que fueron contratados los empleados, cordenando por dia de la semana, de forma que queden ordenados por Lunes, Maries, Miercoles, Jueves , Vieres, Sabado, Domingo SELECT lest_name, hire date, T0_CHAR(hire_date,'DAY') "Dla sen" FROM employees ORDER BY TO_CHAR(hire date, 'D"); 104. _Listar apellido y comision de los empleados. En el caso de que no gane comisi6n, sacar la frase ‘Sin ‘comision’ SELECT last_name, NVL(TO_CHAR (commission_pct),'Sin conision') FROM employees? 105, Listar apelido de los empleados, y una tira de asteriscos, de forma que hay un asterisco por cada 1000S (redondeado) que gana el empleado. Titula la columna 'Empieado y su salario'. Ordenar esta columna de forma que los que mas ganan aparezcan primero. Los apellidos deben quedar ajustados a la longitud del apelido mas largo. SELECT RPAD(last_name, (select wax (length(last_nane}] fron employees), ". ": "J|RPAD(* *; ROUND(Salazy/1000),‘*") “Emieado y su salario" PROM employees ORDER BY salary Desc 106. Listar los distintos codigos de oficio de los empleados, de forma que : AD_PRES se traduzca por A, ‘ST_MAN por B, IT_PROG por C, SA_REP por Dy el resto por 0 SELECT DISTRICT job ia, DECODE (job id, 'AD_PRES", "A", 'ST_MAN', 'B', 'TT_PROG 1 'SB_REP", "D", 'ST_CLERK', from employees 407. _ Listar la tabla LOCATIONS eELRCT * FROH locations; 408. Seleccionar el nombre de departamento, y el nombre de la cludad donde esta SELECT d.department_id,1.city FRON departments d,locetions 1 WHERE d. location_idel.location_idy 409. _ Listar las diferentes ciudades de la tabla LOCATIONS SELECT DISTINET city FROM locations; 170, "Lista el nombre de departamento y nombre de cudad para los depertamento radicados en Seattio. SELECT department _name,depaztnent_j FROM departments 5, locations L GMBRE D.location_ideL. location id AND L.city~'Seattle'; 111. Seleccionar el nombre de paises y la region a que pertenecen (ANSI) SELECT country name, region_nane FROM coun’ NATURAL JOIN regions 142. Seleccionar el nombre de paises y la region a que pertenecen SELECT country_name, region name FROM countries ¢, regions R RHERE C.ragion ideR.ragion_id 113. Seleccionar apellido de los empleados y nombre de la ciudad donde esta el departamento a que n SELECT B.last_name nonbre,L.city cludad FROM enployees B, locations 1, departments D WHERE D.department_id-E.department id AND D.location idef.locstion id 114. Seleccionar nombre ciudades y nombre depatamentos radicados en Canada SELECT L.city ciudad, D.department_name department FROM locations L,departments D WHERE L.location id=0.location_id AND L.country_id="ca’ tambien SELECT L.city ciudad, D-department_name department FRoW locations L,departments D, countries C WHERE L. location id=D. location AND L.country_ideC.country_id AND C.country namew'Canada’ 115. _Listar nombre completo de los trabajadores, oficio, nombre departamento y ciudad de aquellos que ‘no son programadores (‘Programmer’) SELECT first_nane||* ‘| |1ast_nane nonbre, job title oficio, departhent_name departanento,city ciudad FROM employees E,jobs J,departnents 0, locations L WHERE J.job_id ~ B.job_id AND D.departnent_id = E.department_id AND L.location_id = D.location_id AND job_title < 'Progranmer" 116. _Listar nombre completo de los trabajadores, oficio, nombre departamento y ciudad de aquellos que ‘no son programadores (‘Programmer’) (ANSI) SELECT first_nane||' '|/last name nombre, Job_titte oficto, departnent_name departanento,city ciudad FROW employees WATURAL JOIN departments WATURAL JOIN locations NATURAL JOIN jobs WHERE job_titles" ograneer* 10 | 177. _ Seleccionar nombre de departamento, ciudad, codigo postal y estado. Si no hay estado, que salga 'Desconocido’ SELECT department_name "Departanento",city “Ciudad",postal_code "Codigo postal", NVL(state province, 'Desconocido") estaco FROM departments D, locations 1 WHERE D. location _id-L.location_id 118. Seleccionar nombre de departamento, ciudad, codigo postal y estado. Si no hay estado, que salga "Desconocido' (ANS!) SELECT dopartment_nama departanonto, city ciudad, postal_code “codigo postal", NUL (state_province, 'Desconccida') provincia FROM locations NATURAL JOIN dopartwonts 719. _ Seleccionar apellido,cod departamento y nombre departamento al que pertenecen fos empleados SELSCT last_name apellido, D.department_d " Id depart.", department_nane departanento RON employees &, departments D WHERE E.department_id = D.department_id 120. Seleccionar apellido,cod departamento y nombre departamento al que pertenecen los empleados (ANSI) SELECT last_name apellide,department_id "Id depar! FRON employees NATURAL JOIN departments department_nane departamento 721. Seleccionar las distintas combinaciones cod oficio, cod ubicacion para los empleados del departamento cod 80 SELECT DISTINCT Job_{d, location_id FRON departments 0, employees REERE E. department id-D.depa: 122. Seleccionar las distintas combinaciones cod oficio, cod ubicacion para los empieados del departamento cod 80 (ANS!) SELECT DISTINCT job_id, location id FROM locations NATURAL JOIN departments D JOIN employees B GN (D.department_id = B.department_id) WHERE E.department_id = @0; 423. Seleccionar apellido, nombre departamento, cod ubicacion, ciudad para los empleados que ganan comision SELECT last_neme, department_nane, D.location_id, L.city FROM employees E, departments D, Locations 1 GHERE E.departmont_id = D.department_id AND D. location id = L.location id BND commission pet TS NOT NOLL 124. Selecci comision (ANS!) SELECT last_name,depaxtment_nane, location_id, city FROM locations NATURAL JOIN departments JOIN employees USING (department id} WHERE exployees.conmission pct 15 NOT NULL iar apellido, nombre departamento, cod ubicacion, ciudad para los empleados que ganan 125. Seleccionar apellido, nombre departamento para los empleados que tengan una'a’ en su apellido SELECT lest_nane, depaztment_aame FROM enployées =, departments D REPRE E.department_id - D.department_id "eas? 126. Seleccionar apeliido, nombre departamento para los empleados que tengan una ‘a’ en su apellido (ANSI) SELECT last_nane, departnent_nane FROM anploya JOIN departments USING (cepartnent_id) WHERE Lact_name LIKE "Bat! u | 127. Seleccionar apellido, cod oficio, cod departamento, nombre departamento de los empleados cuyo departamento esté radicado en ‘toronto’ (Todo en minusculas) SELECT last_nane, job_id, e.department_ic, departnent_name FROM locations 1, departments dyemployees’e WHERE d.department id~e.department id AND 1,location_ided. location_id AND LOWER (1. 128. Seleccionar apellido, cod oficio, cod departamento, nombre departamento de los empleados cuyo: departamento esté radicado en ‘toronto’ (Todo en minusculas) (ANSI). Empezar por tabla DEPARTMENTS SELECT last_name, job id, department id, department_name FROM departments NATURAL JOIN locations JOIN enployees USING (de; RHERE LOWER (Locations.city} 129. Seleccionar apellido, cod oficio, cod departamento, nombre departamento de los empleados cuyo departamento estd radicado en ‘toronto’ (Todo en minusculas) (ANSI). Empezar por tabla EMPLOYEES, SELECT last_name, job_id,departrent_id, depertment_nane FROM employees JOIN departments USING (department_id) JOIN locations USTNG (location_id} WHERE LONER(city)="toxonto" 130. Seleccionar apeliido, cod empleado apellido jefe, cod empleado jefe de todos los empleados SELECT E.last name "Enpleado", E.employee_id "Id empl", Jelast_nane "Jefe", J.euployes id "ia jefe" FROM employees E, employees J WIBRE J-employee id ~ E.menager_id 731, __ Seleccionar apellido, cod empleado,apeliido jefe, cod empleado jefe de todos los empleados (ANSI) SELECT E.last_nane "Empleado", E.employee i¢ "Id empl", J.last_nane "Jefe", Jvemployee_id "Id jef6" FROM employees JOIN employees J ON ( J.employes_id manager_id } 182, _ Seleccionar apellido, cod empleado,apellido jefe, cod empleado jefe de todos los empleados, y que salgan incluso los empleados sin jefe. Ordenar por cod empleado. (ANS!) SELECT B.last_nane "Empleado", E-employee_id "Td empl", Jlast_nane "Jefe", J.employee_id "Td jefe" FROM efiployees ERY OUTER JOIN employees J ON | J.employee_id = B.manager_id ) ‘oRDsR BY ©.enployee_id O tambien: SELECT E.last_name "Smpleado", E-employee_id "Id empl", J.last_pame "Jefe", J.employes id “Id jefe" FROM efployees F JOIN employees J ON ( J.enpleyee_id(t} = E.manager_id } ORDER BY E.employes_ia es 133. Seleccionar cod departamento, apelido empleado y apellido colega (colega: trabaja en el mismo departamento). Evitar que un empleado salga como colega de sf mismo SSLECT E.department_id "ID depart", E.last_name "Bmpleado", C.last_name "Colega” "20H employees E, employees C WHERE E.department_id = C.department_id BND B.employee_id <> C.enployee_idr 134. Seleccionar cod departamento, apellido empleado y apellido colega (colega: trabaja en el mismo departamento). Evitar que un empleado salga como colega de si mismo (ANS!) SELECT E.department_id "ID depart", £.last_nase "Empleado", C.last_neme "Colega™ FROM emp GOIN employees C ON (E-department id = C.department_id) WHERE B.employee id <> C.employee_id; 138. Seleccionar apelido y fecha contrato de los empleados contratados posteriormente al empleado ‘Davies’ SELECT £.last_nane, B.hire date FROM employees B, employees D WHERE D.last_nane = 'Davies' AND E.hive_ date > D.hive date 12 136. _ Seleccionar apeliido y fecha contrato de los empleados contratados posteriormente al empleado ‘Davies’ (ANS!) SELECT B.last_name, B.hire date FROM enployees = JOIN employees D ON (D.last_name = 'Davies') WHERE e.hire date>d.hire date 137. __ Seleccionar apellido y fecha de contrato de los empleados, apeliido y fecha contarto de su jefe, de tal forma que solo saigan los empleados cuyo contrato fue anterior al de su jefe. (ANSI) SELECT ¢.laet_name Enp,e.hire date "Contr enp",m.last_nane Jofe,m.hire date "Contr jofo" FROM employeas E JOIN employees J ON B.manager_id = J.enployee_id WHERE E.hizevdate SUBSTR(b.first_name, 1,2) 740. Listar todas las posibles combinaciones de nombres y apellidos de empleados, de forma que la Jongitud del nombre sea menor que la del apellido (ANS!) SELECT a.first_name, b.iast_nane FROW employees a ROSS JOT employees b WHERE LENGTH (a.first_nane) < LENGTH (b.last_neme} 141. Seleccionar nombre de empleados, departamento al que pertenece, para los departamentos que empiecen con 'S' (ANS!) SELECT last_name, dopartnent_name USING (cepartment_id) WHBRE dopartment_namo LIKE 'S0" 142. Seleccionar ciudades y pals al que pertenece fa ciudad (ANSI) SELECT city,couatey_nane FROM locations NATURAL COTM cow! 143. Seleccionar paises y ciudades donde radican depatamentos. Incluir paises que no haya departamento (ANS!) SELECT country name, city FROM countries LEFT OUTER JOTN Locations USING {country_id) 0 también’ ELECT country name, city ROM Locations RIGHT OUTER JOIN countries USING {country_ic) 144. Seleccionar paises y cludades donde radican depatamentos. Incluir paises que no haya departamento Si no hay ciudad, scar la frase 'No existe ciudad’. (ANS!) SELECT country name, NVL(city, 'No existe ciudad") ciudad FROM location: RIGAT OUTER JOIN countries USING(country_id) 145. Calcular el salario medio por nombre de departamento (ANSI) SELZCT department name,AVG(salary) Media FROM employees JOIN dopartnente USING (department _id) GROUP BY cepartment_naney 13 146. Calcular el salario medio por nombre de departamento. Incluir los departamentos sin empleados asignados (ANS!) SEECT department_name, AVG (salary) FROM employees LEFT OUTER JOIN departments USING (department_id) GROUP BY department_name 7147. Calcular el salario maximo, minimo,medio y la Suma de salarios de todos los empleados. Redondear las cantidades SELECT ROUND (MAK (salary) ) Maximo, ROUND (MIN (salary)] Minimo, ROUND(AVG (salary) } Media, ROUND(SUM {salary} } Suma OM employees; 148. Calcular el salario maximo, minimo,medio y la suma de salarios de todos los empleados, desglosado por cod oficio. Redondear las cantidades SELECT Job_id, ROUND (MAX (salary) ) Maximo, ROUND (MIN (salary)) Minimo, ROUND (AVG (salary) ) Media, ROUND(SUM(salary}) Suma FROM employees GROUP BY job. 149. Calcular cuantos empleados hay para cada cod oficio SELECT job ia cargo, COUNT (employee id) Num Eapls ROM enployees GAOUP BY job_id: 150. _Calcular cuantos mandos hay en la empresa. (Mando: aquel que figura en la columna manager_id de algtn empleado) SELECT COUNT (DISTINCT manager, FROM enployees: 4a) "Num de Mandos™ 151. _ Calcular la diferencia entre el mayor sueldo de la empresa y el menor. si NaX (salary) - MIN(salary) Diferencia FROM employees: 152. Calcular el salario minimo de los empleados de cada mando intermedio. Exciuir los empleados sin Jefe asignado. Evitar que saigan los grupos con salario minimo menor de 6.000. Ordenar en sentido descendents SELECT manager id, MIN(salary) FROM employees WHERE salary2000) WHERE Last_name LIKE '%a8" 770. _ Enconirar el apellido y salario de empleados que ganan menos de 2.0008. Poner alias ‘nom’ y sou’. De este conjunto, seleccionar los que tengan una ‘a’ en el NOM SELECT * from (SELECT last_name non, sal FROM employees WHERE salary>2000) WHERE aon LIKE '¥28" 471. _ Encontrar el nombre y salario de empleados que gana menos de 2.0008. Poner alias ‘nom’ y ‘sou. De este conjunto, cambiar los alias a ‘nombre’ y ‘sueldo’. Seleccionar los que tengan una'‘a' en el NOM. De estos, seleccionar el SUELDO SELECT sueldo fron (SELECT nom nombre, sou sueldo FROM (SELECT last_name nom, salary sou FROM employees WHERE. salary>2000) nom LIKE "$a$") wae: 772, _ Seleccionar apeliides y salario de los empleados que ganan mas que la media de empleados de! departamento 20 SELECT last_nane, salary FROM employees WHERE salary> (SELECT AVG (salary) FROM enployees WHERE department_id=20) 178, _ Listar apeliido, suedo fecha contrato de los empleados contratados después de haber sido contratado el primer trabajador del departamento 30. Ordenar por fecha contrato oT last _nane, salary, hire date FROM employees WHERE hize date> 7 (SELECT MIN (hire date) FROM employees WHERE department _ik ORDER BY hire date 0} 174. Listar apeliido, suedo fecha contrato de los empleados contratados después de haber sido contratado el primer trabajador de! departamento 30 y antes que el ditimo contratado del departamento 30. ‘Ordenar por fecha contrato SeLECT last_nane, salary, hire date FROM employees WHERE hire date > {SELECT MIN (hire date) FROM employees WHERE department_i AND hire_date < (SBLECT MAK (hire_date) FROM employees wiEas departrent_ide30) ORDER BY hive date tambien SELECT last_name, salary, hire date FROM employees WHERE bie date BETWEEN (SELECT MIN (hire date) FROM employses WHERE department_id=30) and (SELECT MAK (hize date} FROM employees WHERE department id=30) 0) ORDER BY hire date 175, _Listar apeliido, sueldo, fecha contrato de todos los empleados que ganan mas de la media de su departamento SELECT last_nano, salary, hire date FROM empleyées E. HERS ealary> (SELECT AVG (salary) FROM employees WHERE department_id ~ E.department_id) ; 176. _Listar apellido, sueldo, fecha contrato de todos los empleados que ganan entre el menor y mayor sueldo de todos los que tienen de cod oficio SA_REP SELECT last_name nonbre,salary salaric, hire date “fecha contrato” FROM employees WHERE salary BETWEEN (SELECT min_salary FROM jobs WHERE. job_id LIKE ‘SA_REP*) AND (SELECT max_salary FROM Jobs WHERE job_id LIKE ‘SA_REP"); 177. Listar apellido, sueldo de todos los empleados que ganan un sueldo igual a cualquiera de los que gana un empleado con cod oficio SA_REP SELECT last_nane, salary FROM enoloyees WHERE salary IN (SELECT salary FROW employees WHERE job_ide"SA REP"); 778. _Listar apellido, sueldo de todos ios empleados que ganan un sueldo superior a alguno de los que gana un empleado con cod oficio SA_REP SELECT last_name, salary FROM employees WHERE salary > ANY (SELECT salary FROM employees WHERE job_id-'SA_REP"); 18 179. Listar apellido, sueldo de todos los empleados que ganan un sueldo superior a todos los que ganan los empleados con cad oficio SA_REP SELECT last name, salary FROM employees WHERE salary > ALL (SELECT salary FROM employees WHERE job_id="sa_REP*); 180. Seleccionar apeliido, cod departamento, nombre departamento de los empleados, Hacer que siagan los departamentos sin empleados y los empleados sin departamento asignado SELECT ¢.1ast_name, e.department_id,d.department_name FROM employees E FULL OUTER JOIN departments B ON E.department_id = D.department_id 181. _ Seleccionar apeliido y fecha contrato de los colegas de Ziotkey (Que trabajan en el mismo departamento). Excluir el mismo Ziotkey SELECT last_ame Apellide, hire date "Fecha con." FROM omployoos WHERE dopartment_id~ (SELECT department_id FROM employees WHERE last_name='2lotkey") AND last_nane <> *Zlotkey': 182. Seleccionar ID empleado, apellido y sueldo de los empleados que gaan mas que la media de la empresa. Ordenar por sueldo SBLECP employee id "Numero emp", last_nane apellido, salary Salario FROM employees WHERE salary> (SBLECP AVG (salary) FRO! employees) ORDER BY salar: 0 también: SELECT employee id "Numero exp", last_nane Apellide, salazy Salario FROM employees WHERE salary> (SELECD AVG (salary) FROM employees) ORDER BY 3: 183. Seleccionar id de empleado, apellido de todos los colegas de empleados que fengan una ‘u' en su apellido. (Colega: que trabaja en el mismo departamento) ELECT employee id "N° empleado", last_name apellido FROM employees WHERE department_td SELECT department_id FROM employees WHERE last_nane LIKE '$u8") 184. Seleccionar apellido, ID de empleado y cod oficio de empleados que trabajan en Deparfamentos coyo cod ubicacion es el 1700 SELECT last_name Apellido, department_1D, job_id FROM employees JOIN departments USING (department_id) WHERE location id =1700 O también LECT last_name Apellido, department_tD, job_id FROM employees WHERE department ic 18 (SELECT department_id 19 185. Seleccionar 6! apelido y salario de los empleados que tienen a un empleado con apelido King como jefe directo. SELECT last name, salary FROM employees WHERE manager id IN (SELECT employee Ad FROM employees MKERE’ Last _nane="King') 786. Seleccionar el apellido y salerio de los empleados que tenen a King, (que no tiene jefe) como jefe directo, SELECT last_name, salary FROM employees WEERE manager id = {SELECT enployee_id FROM employecs WHERE last_name='King' BND managef_id TS NULL) 187. Selecionar ID departamento, apellido y cod oficio de los empleados que pertenecen al departamento Executive SELECT department_id, last_name, job_id FRON employees JOIN departments USING (department_ie) WHERE department_name = *Bxecutive™ O tambien SELECT department_id, last_nane, job Ta FRO enployees WHERE departnent_ide (SELECT department_id FROM departnents WHERE department_name 188. Seleccionar ID empleado, apellido, sueldo de los colegas de empieados que tengan una apeliido, y que ganen sueldos (los colegas) mayor que la media de sueldos de la empresa SELECT ‘enployee_id "N° -empteado*, last_rame-Rpetttie,—szlary S2lario FROM employees WHERE department_id IN (SELECT department_{a FROM enployees WHERE last_name LIKE taut") AND salary > (SELECT AVG (sal. FROM enployees) 7 Executive’) ensu » 189. Seleccionar apeliido y sueldo de los trabajadores pertenecientes a departamentos radicados en Seattle SELECT lest_name Apellido, salary Salazio FROM employees WHERE department _id IN (SELECT department_ta ROM departments d, locations 1 WHERE d. location id=1. location id AND city="Seattlé") E 0 también: SELECT lest nane Apellido, salary Salario FROM enployees WHERE department_i@ IN (SELECT departnent_ta FROM departments WHERE location id = SELECT location_id FROM locations — WHERE city="Seattle")) 190. Seleccionar un numero de orden y el apeliido de los empleados 20 SELECT rownum, Jast_name FROM employees 191. Seleccionar un numero y apellido de los primeros 10 empleados, sin especificar ningun orden SELECT rownum, last_name FROM employses WHERE rownum<]1 “192. Seleccionar un numero y apellido de los primeros 10 empleados,ordenados por apellido SELECT rownum, first_name FROH employees WHERE cownumeL1 ORDER BY first_naxe 193. Seleccionar los datos de los 5 empleados con suldo més alto de la empresa SELECT © FROM (SELECT Lact name, selery FROM employeas ORDER BY salary desc) WHERE rownum < 6 194. Crear un script que seleccione el apellido, sueldo y fecha contrato de los empleados que ganan mas de una cantidad, que ha de proporcionar el usuario SELECT last_name, salary, hire date FROM enployees WHERE salary > gcant; 195, Crear un script que calcule la media de salarios de los empleados de un departamento, que ha de proporcionar el usuario. SELECT AVG (salary) FROM employees WHERE department_idesapto 196. Crear un script que calcule la media de salarios de los empleados con un determinado cod ofc gue ha de proporcionar el usuario SELECT AVG (salary) FROM enployees WHERE job_id=' goticio® 197. Crear un script que calcule la media de salarios de los empleados de un departamento y cod oficios dados, que ha de proporcionar el usuario SELECT AVG (salary) FROM employees: WERE job_id="soficio’ AND department_ideadpto 198. Crear un script que calcule la media de salarios de los empleados de un departamento y cod oficios dados, que ha de proporcionar el usuario. Posibiltar que el cod oficio se facilite en mayusculas, minusculas ‘© como se quiera, SELECT AVGisalary) FROM employees WHERE job_id-UPPER (* sof. AND department_id=saptoz 199, Al ejecutar el script anterior, evitar que pregunie por oficio y dpto, y que tome como valor dpto = 80 y oficio = sa_rep. Anular estos valores después de ejecutar el script DEFINE dpto = 80 DEFINE officio = ca ascript UNDEEINE dpto UNDEFINE oficio 21

También podría gustarte