/*1 Crear una consulta que permita mostrar mostrar el apellido y salario de los empleados que ganan más de 12 000*/ select last_name, salary from employees where employees.salary >= 12000; /*2 Crear una consulta que permita mostrar mostrar el apellido y el número de departamento del empleado empleado No. 176*/ select last_name, department_id from employees where employees.employee_id = 176; /*3 Crear una consulta que permita mostrar el apellido y salario de los empleados que su salario no está en el rango de 5000 y 12 000*/ select last_name, salary from employees where employees.salary < 5000 or employees.salary > 12000; /*4 Crear una consulta que permita mostrar el apellido, el código de trabajo (job_id), de los empleados que empezaron a laborar entre el 20 de febrero de 2003 y el 1 de mayo de 2005, ordénelo de forma ascendente por fecha*/ select last_name, job_id, hire_date from employees where employees.hire_date employees.hire_date >= to_date('20/02/03') to_date('20/02/03') and employees.hire_date <= to_date('01/05/05') order by hire_date; select last_name, job_id, hire_date from employees where hire_date between '20/02/2003' and '01/05/2005'/* rango en el k se ubica xD!*/ order by hire_date ASC;/*ordena de forma ascendente ascendente xD! */ /*5 Crear una consulta que permita mostrar el apellido y el número de departamento de los empleados de los departamentos 20 y 50, en orden alfabético. */ select last_name, department_id from employees where employees.department_id = 20 or employees.department_id employees.department_id = 50 order by last_name DESC; /*6 Muestre el apellido y la comisión (en soles) de los empleados; cuyos salarios se encuentren entre 5000 y 12 000 y además pertenezcan a los departamentos 20, 10 y 80*/ select last_name, (nvl(commission_pct,0)*salary) comision from employees where (salary between 5000 and 12000) and (employees.department_id (employees.departmen t_id = 20 or or employees.department_id employees.department _id = 10 or or employees.department_id employees.department _id = 80); /*7 Muestre el nombre y apellido en una sola columna llamada nombre_completo y la fecha de contratación de los empleados que entraron en el año 2004. */ select first_name||' '||last_name "Nombre_completo", hire_date from employees where to_char(hire_date,'yyyy') = 2004; /* 8 Muestre el nombre y el código de trabajo de todos los empleados que no
tienen un supervisor (manager_id) */ select employee_id, first_name from employees where manager_id is null; /*9 Muestre el apellido, salario y las comisiones de todos los empleados que ganan comisión, ordénelo de forma descendente los 2 campos*/ select last_name, salary, commission_pct*salary from employees where commission_pct is not null order by salary desc, commission_pct*salary desc; /*10 Muestre el apellido de los empleados que tengan como tercera letra una a.*/ select last_name from employees where substr(last_name, 3, 1) = 'a'; /*11 Muestre el apellido de los empleados que tengan una a y una e en su apellido */ select last_name from employees where last_name like '%a%' and last_name like '%e%'; /* 12 Muestre el apellido, código de trabajo y salario de los empleados que laboran como Sales representative (SA_REP) o Stock clerk (ST_CLERK) y que su salario no sea igual a 2500, 3000 o 7000. */ select last_name, job_id, salary from employees where (job_id = 'SA_REP' or job_id = 'ST_CLERK') and (salary <> 2500) and salary <> 3000 and salary <> 7000; /* 13. Construya una vista llamada sueldo_empleado que permita visualizar el código, nombre completo concatenado con el alias Nombre_completo a dicha columna, el sueldo total (incluyendo el porcentaje de su comision), solo para los empleados que tienen más de 5 años en la empresa. */ select employee_id, concat(concat(first_name, ' '), to_char(last_name)) "Nombre_Completo", salary, nvl(salary+commission_pct,0) from employees where to_char(hire_date,'yyyy') <'2008' /*14. Construya una vista llamada datos_empleado que permita mostrar el código, nombre completo, correo electrónico, car go, nombre del departamento y nombre del jefe de todos los empleados que fueron contratados en el mes actual.*/ select e.employee_id, e.first_name||' '||e.last_name "datos empleado", e.email, j.job_title, d.department_name, g.first_name "Jefe", e.hire_date from employees e, employees g, jobs j, departments d where e.manager_id = g.employee_id and e.job_id = j.job_id and e.department_id = d.department_id and to_char(e.hire_date,'mm') = 9;
/* 15 Construya una vista llamada proyección que permita visualizar el código, apellido, monto a recibir mensual y el monto a percibir en el año para todos
los empleados que son manager en la empresa. */ select distinct e.employee_id, e.last_name, e.salary "Monto mensual", e.salary*12 "Monto anual" from employees e, employees g where e.manager_id is not null order by e.employee_id asc; /*16 Muestre la estructura de la tabla DEPARTMENTS. Seleccione todos los datos de la tabla para los departamentos que están localizados en la región Americas.*/ select d.department_id, d.department_name, d.manager_id, d.location_id from departments d, locations l, countries co , regions re where d.location_id = l.location_id and l.country_id = co.country_id and co.region_id = re.region_id and re.region_name='Americas' order by d.department_id asc; /*17 Muestre la estructura de la tabla EMPLOYEES. Cree una consulta para mostrar el apellido, el código de cargo, la fecha de contratación y el número de empleado para cada empleado, con el número de empleado en primer lugar. */ select employee_id, last_name, job_id, hire_date from employees; /*18. Cree una consulta para mostrar los códigos de cargo que existen en la tabla EMPLOYEES.*/ select distinct job_id from employees; /* 19. Muestre el apellido concatenado con el identificador de cargo, separados por una coma y un espacio y llame a la columna Titulo_empleado. */ select last_name||','||' '||job_id "Titulo empleado" from employees; /*20 Mostrar los nombres y la primera inicial del apellido para todos los empleados que trabajan en el código del departamento 100.*/ SELECT e.first_name ,e.last_name , SUBSTR(e.last_name,1,1) FROM employees e where e.department_id=100; /*21 Mostrar los apellidos y el nombre del mes que fue contratado los empleados del código del departamento 30. Rotule esta última columna como MES_CONTRATO.*/ SELECT last_name , to_char(hire_date,'MONTH') "MES CONTRATO" FROM employees where department_id=30; /*22 Muestre las primeras cinco letras del nombre del departamento en mayúsculas para la tabla departments.*/ SELECT upper( substr( d.department_name , 1,5 )) FROM departments d; /*23 Mostrar el nombre, fecha de contratación y el número de días trabajados. */ select first_name, hire_date, round(sysdate- hire_date) from employees;
/*24 Mostrar el nombre y la fecha de contrato para todos los empleados en el siguiente formato: “dd de mes de aaaa”, rotule esta columna con el nombre de FECHA_CONTRATO. Ejemplo: 17 de Junio de 1987.*/
SELECT first_name , to_char(hire_date,'fmdd " de " month " de " yyyy') "FECHA DE CONTRATO" FROM employees; /*25 Mostrar el nombre, fecha de contratación y la fecha del primer chequeo médico, sabiendo que este se realiza cada seis meses, para los empleados con código de departamento 60.*/ SELECT first_name,hire_date , add_months(hire_date,6) FROM employees where department_id=60; /*26 Muestre una consulta donde se liste el apellido de los empleados su sueldo, la comisión expresada en soles a recibir y un mensaje a los que no ganan comisión.*/ SELECT last_name, salary , nvl(commission_pct,0), nvl2(commission_pct,'gana ','no gana') FROM employees; /*27 Construya una sentencia que te permita obtener los nombre de todos los empleados y un campo que indique es manager o no es manager*/ select distinct e.employee_id , e.first_name, NVL2(e.manager_id,'Manager','No es manager') from employees g, employees e order by e.employee_id asc; /*28 Construya una sentencia que te permita obtener los nombres de todos los empleados que no ganan comisión y además no pertenecen al departamento 50 ni 80 */ SELECT first_name,last_name,department_id FROM employees where commission_pct is null and department_id<>80 and department_id<>50; /*29 Construya una sentencia que te permita obtener los datos completos de todos los empleados que ganan comisión, no son jefes y además tienen más de 8 años en la empresa.*/ SELECT first_name ,manager_id,commission_pct ,(to_number(to_char(sysdate,'yyyy'))to_number(to_char(hire_date,'yyyy'))) FROM employees where (to_number(to_char(sysdate,'yyyy'))- to_number(to_char(hire_date,'yyyy')))>8 and manager_id is not null and commission_pct is not null ; /*30. Construya una sentencia que muestre lo siguiente para cualquier empleado Código Empleado Nombre_jefe 123 juan Perez Luis Casas */ select e.employee_id, e.first_name||' '||e.last_name, g.first_name||' '||g.last_name from employees e, employees g where e.manager_id=g.employee_id; /*31. Para cada empleado, visualice su número, apellido, salario y salario incrementado en el 15 % y expresado como número entero. Etiquete la columna como New Salary.*/ select employee_id, last_name, salary, round((salary + 0.15*salary)) "New salary" from employees;
/*32. Escriba una consulta que muestre los apellidos de los empleados con la primera letra en mayúsculas y todas las demás en minúsculas, así como la longitud de los nombres, para todos los empleados cuyos nombres comienzan por J, A o M. Asigne a cada columna la etiqueta correspondiente. Ordene los resultados según los apellidos de los empleados.*/ select initcap(last_name) apellido, fir st_name nombre, length(first_name) "Longitud de nombre" from employees where substr(first_name,1,1) in ('A','J','M') order by last_name; /*33. Para cada empleado, muestre su apellido y calcule el número de meses entre el día de hoy y la fecha de contratación. Etiquete la columna como MONTHS_WORKED. Ordene los resultados según el número de meses trabajados. Redondee el número de meses hacia arriba hasta el número entero más próximo*/ SELECT last_name,ceil(MONTHS_BETWEEN(sysdate,hire_date)) "MONTHS WORKED" FROM employees; /*34. Muestre el apellido de cada empleado, así como la fecha de contratación y la fecha de revisión de salario, que es el primer lunes después de cada seis meses de servicio. Etiquete la columna REVIEW. Formatee las fechas para que aparezca en un formato similar a “Monday, the Thirty-First of July, 2000”.*/ select last_name apellido, hire_date Fecha_contratacion, to_char(next_day(add_months(hire_date, 6),'Lunes'), 'day dd "de" month, yyyy') review from employees ; /*35. Muestre el apellido, la fecha de contratación y el día de la semana en el que comenzó el empleado. Etiquete la columna DAY. Ordene los resultados por día de la semana, comenzando por el lunes.*/ select last_name, hire_date, to_char(hire_date, 'day') day from employees order by to_char(hire_date ,'d') asc; /*37. Utilizando la función DECODE O CASE, escriba una consulta que muestre el grado de todos los empleados basándose en el valor de la columna JOB_ID, según los datos siguientes: Cargo Grado AD_PRES A ST_MAN B IT_PROG C SA_REP D ST_CLERK E Ninguno de los anterio 0 */ select first_name||' '||last_name, job_id, decode(job_id, 'AD_PRES', 'A', 'ST_MAN', 'B', 'IT_PROG', 'C', 'SA_REP', 'D', 'ST_CLERK', 'E', '0') grado from employees;
/*• Mostrar los nombres y la primera inicial del apellido para todos los empleados que trabajan en el código del departamento 100.*/ Select employees.first_name, last_name, substr(last_name, 1, 1) from employees where department_id=100; /*• Mostrar los apellidos y el nombre del mes que fue contratado los empleados del código del departamento 30. Rotule esta última columna como MES_CONTRATO.*/ select employees.last_name,hire_date, to_char(hire_date,'Month') "MES_CONTRATO" from employees where department_id = 30; /*• Muestre las primeras cinco letras del nombre del departamento en mayúsculas para la tabla departments.*/ select department_name ,upper(substr(department_name,1,5)) from departments; /*• Mostrar el nombre, fecha de contratación y el número de días trabajados.*/ select first_name, hire_date,trunc(sysdate-hire_date) "DIAS TRABAJADOS" from employees; /*• Mostrar el nombre y la fecha de contrato para todos los empleados en el siguiente formato: “dd de mes de aaaa”, rotule esta columna con el nombre de FECHA_CONTRATO. Ejemplo: 17 de Junio de 1987.*/ select first_name, to_char(hire_date,'fmdd "de" month "de" yyyy')"FECHA DE CONTRATO" from employees; /*• Mostrar el nombre, fecha de contratación y la fecha del primer chequeo médico, sabiendo que este se realiza cada seis meses, para los empleados con código de departamento 60.*/ select first_name,hire_date,add_months(hire_date,6) from employees where department_id=60; /* MULTITABLAS*/ /*• Mostrar el nombre del empleado y el título del trabajador para todos aquellos cuya fecha de contratación fueron en el año 2005.*/ select first_name, job_title from employees,jobs where employees.job_id=jobs.job_id and to_char(hire_date,'yyyy')= 2005; /*• Mostrar el nombre del departamento y el nombre de su gerente.*/ select department_name, first_name from departments,employees where departments.manager_id=employees.manager_id; describe departments; /*• Mostrar el nombre del empleado y el nombre del departamento para todos aquellos que fueron contratados en el primer semestre de 2008.*/ SELECT first_name,department_name , hire_date FROM employees,departments where employees.department_id= departments.department_id and to_char(hire_date,'yyyy')=2008 and to_char(hire_date,'mm')<=6; /*• Mostrar el nombre del departamento y el nombre de su gerente.*/ SELECT department_name , employees.first_name FROM departments,employees where employees.manager_id = departments.manager_id; /*• Mostrar el nombre del empleado y el nombre del departamento para todos aquellos que fueron contratados en el primer semestre de 2008.*/ SELECT first_name,department_name FROM employees,departments where employees.department_id = departments.department_id and to_char(hire_date,'yyyy') = 2008 and to_char(hire_date,'mm')<=6;
/*• Mostrar el nombre, apellido, fecha de inicio y de fin para todos los empleados.*/ SELECT first_name,last_name,hire_date , sysdate FROM employees; /*• Mostrar el nombre del departamento, código postal, nombre del país y nombre de la región. */ select department_name, postal_code, country_name, region_name from departments, locations, countries, regions where departments.location_id=locations.location_id and locations.country_id = countries.country_id and regions.region_id = countries.region_id; /*• Mostrar el apellido del empleado, nombre del departamento, dirección de la calle, nombre del país y nombre de la región, para todos aquellos empleados que tengan un salario mayor a 15000.*/ select last_name, department_name, street_address, country_name, region_name from employees, departments , locations, countries, regions where employees.salary>=15000 and employees.department_id=departments.department_id and departments.location_id=locations.location_id and locations.country_id=countries.country_id and countries.region_id=regions.region_id;
/*• Muestre: location ID, street address, city, state or province, and country in the output para cualquier empleado */ SELECT employee_id, last_name FROM employees; SELECT locations.location_id , locations.street_address,locations.city , locations.state_province FROM locations,employees , departments where to_char('105')=employee_id and employees.department_id=departments.department_id and departments.location_id=locations.location_id ; /*• Muestre: last name, department number, and department name para todos los empleados que han sido contratados hace 13 años*/ SELECT last_name,employees.department_id,department_name,to_char(sysdate,'yyyy'),to_char(hire_date,'yyyy') FROM employees,departments where(to_number(to_char(sysdate,'yyyy'))- to_number(to_char(hire_date,'yyyy')))>=10 and employees.department_id=departments.department_id; /*• Muestre last name, job, department number, and department name para todos los empleados que trabajan en Toronto.*/ SELECT last_name,job_id,departments.department_id,department_name,city FROM employees,departments,locations where locations.city='Toronto' and employees.department_id=departments.department_id and departments.location_id=locations.location_id; /*• Cree una sentencia que muestre: el apellido, el nombre de departamento y el nombre del manager para cada empleado que gana mas de 8000 */ SELECT last_name,department_name,departments.manager_id,employees.first_name FROM employees,departments where employees.manager_id = departments.manager_id and salary>=8000;
/*• Muestre a todos los empleados incluyendo a Ki ng, quien no tiene manager. Ordene los resultados por el codigo de empleado*/ SELECT * FROM employees; SELECT * FROM departments; SELECT * FROM countries; SELECT * FROM locations; SELECT last_name,department_name,departments.manager_id,employees.first_name FROM employees,departments where departments.manager_id=null; Para todos lo empleados que fueron contratados despues de haber contratado al empleado que gana el menor sueldo en la empresa, se necesita obtener el año y el ultimo dia del mes que fue contratado, ademas de mostrar su nombre y codigo.
SELECT employee_id, last_name, to_char(hire_date,'yyyy')"Año contrato", last_day(hire_date)"Ultimo dia del mes" FROM employees where hire_date >( SELECT hire_date FROM employees where salary = (SELECT min(salary) FROM employees));
Muestre el monto que gana un empleado al dia si se sabe que solo trabaja 20 dias al mes, redondee el monto a 2 decimales y muestre la cantidad de meses que hasta el momento esta trabajando en la empresa, ademas de mostrar su nombre y codigo. select employee_id, first_name, round((salary/21),2) "sueldo diario", round(months_between(sysdate,hire_date)) "Meses trabajados" from employees;
Para el empleado que gana mas sueldo en la empresa muestre su nombre completo y el sueldo total a recibir incluido comision mas un bono de 100 por cada mes trabajado desde que lo contrataron. (muestre la cantidad de meses) SELECT first_name, last_name, salary, (nvl(commission_pct,0)* salary) comision, salary + (nvl(commission_pct,0)* salary) "Sueldo total", (round(months_between(sysdate,hire_date)) * 100) "Bono Mes", (salary + (nvl(commission_pct,0)* salary))+( (round(months_between(sysdate,hire_date)) * 100)) "Total percibir" FROM employees where salary = (SELECT max(salary) FROM employees) Para todos los empleados indique el nuevo codigo que tendran si se sabe que a partir de ahora sera el siguiente formato: E1XXXapellido000 renombre la columna con nuevo_codigo xxx = 3 ultimas letras de su nombre 000 = primeros 3 numeros de su codigo
SELECT 'E1'||upper(substr(first_name,(length (first_name)-3),3))
||upper(last_name)||substr(employee_id,1,3) "Nuevo codigo" FROM employees
El empleado con codigo 125 debe salir de vacaciones exactamente despues de 1 año de haber sido contratado, pero debido a ciertos problemas se le pide que espere 3 meses para hacer ef ectiva sus vacaciones, luego se le indica que saldra el siguiente lunes despues de los 3 meses de espera. muestre el nombre completo, la fecha de contrato y la fecha de salida de vacaciones renombrada con Vacaciones.
select last_name, hire_date "Fecha contrato", to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm') ||'/'||2013) "Fecha vacaciones", ADD_MONTHS((to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm') ||'/'||2013)),3)"Nueva Fecha vacaciones", NEXT_DAY( (ADD_MONTHS((to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm') ||'/'||2013)),3)),'Lunes') "Salida vacaciones" from employees WHERE employee_id=125; Para el jefe del empleado 125 se le pide que espere los mismos tiempos pero su salida se prolonga hasta el ultimo dia del mes despues de los 3 meses de espera. A este empleado se le ofrece pagarle los 3 meses mas los dias de trabajo indique el monto adicional de pago en una columna llamada bono, el sueldo total a percibir en ese mes, y otra columna donde se muestre el total. select last_name, hire_date "Fecha contrato", to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013) "Fecha Vacaciones", add_months((to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013)), 3) "Nueva Fecha Vac", LAST_DAY((add_months((to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013)), 3))) "Vacaciones", (SALARY/30)*( (LAST_DAY((add_months((to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013)), 3)))) (to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013))) "Bono adicional", salary + (nvl(commission_pct,0)*salary) "Sueldo total", ((SALARY/30)*( (LAST_DAY((add_months((to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013)), 3)))) (to_date( to_char(hire_date,'dd')||'/'|| to_char(hire_date,'mm')||'/'||2013))))+(salary + (nvl(commission_pct,0)*salary))"Total a recibir" from employees where employee_id=(select manager_id from employees where employee_id=125);