Nothing Special   »   [go: up one dir, main page]

Cunsultas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

/*1 Crear una consulta que permita mostrar el apellido y salario de los empleados que ganan ms de 12 000*/ select

last_name, salary from employees where employees.salary >= 12000; /*2 Crear una consulta que permita mostrar el apellido y el nmero de departamento del 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 cdigo 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, ordnelo de forma ascendente por fecha*/ select last_name, job_id, hire_date from employees where employees.hire_date >= 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 xD! */ /*5 Crear una consulta que permita mostrar el apellido y el nmero de departamento de los empleados de los departamentos 20 y 50, en orden alfabtico. */ select last_name, department_id from employees where employees.department_id = 20 or employees.department_id = 50 order by last_name DESC; /*6 Muestre el apellido y la comisin (en soles) de los empleados; cuyos salarios se encuentren entre 5000 y 12 000 y adems 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 = 20 or employees.department_id = 10 or employees.department_id = 80); /*7 Muestre el nombre y apellido en una sola columna llamada nombre_completo y la fecha de contratacin de los empleados que entraron en el ao 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 cdigo 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 comisin, ordnelo 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, cdigo 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 cdigo, 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 ms de 5 aos 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 cdigo, nombre completo, correo electrnico, cargo, 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 proyeccin que permita visualizar el cdigo, apellido, monto a recibir mensual y el monto a percibir en el ao 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 estn localizados en la regin 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 cdigo de cargo, la fecha de contratacin y el nmero de empleado para cada empleado, con el nmero de empleado en primer lugar. */ select employee_id, last_name, job_id, hire_date from employees; /*18. Cree una consulta para mostrar los cdigos 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 cdigo 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 cdigo 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 maysculas para la tabla departments.*/ SELECT upper( substr( d.department_name , 1,5 )) FROM departments d; /*23 Mostrar el nombre, fecha de contratacin y el nmero de das 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 contratacin y la fecha del primer chequeo mdico, sabiendo que este se realiza cada seis meses, para los empleados con cdigo 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 comisin expresada en soles a recibir y un mensaje a los que no ganan comisin.*/ 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 comisin y adems 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 comisin, no son jefes y adems tienen ms de 8 aos 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 Cdigo 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 nmero, apellido, salario y salario incrementado en el 15 % y expresado como nmero 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 maysculas y todas las dems en minsculas, 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 segn los apellidos de los empleados.*/ select initcap(last_name) apellido, first_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 nmero de meses entre el da de hoy y la fecha de contratacin. Etiquete la columna como MONTHS_WORKED. Ordene los resultados segn el nmero de meses trabajados. Redondee el nmero de meses hacia arriba hasta el nmero entero ms prximo*/ 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 contratacin y la fecha de revisin de salario, que es el primer lunes despus 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 contratacin y el da de la semana en el que comenz el empleado. Etiquete la columna DAY. Ordene los resultados por da 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 funcin DECODE O CASE, escriba una consulta que muestre el grado de todos los empleados basndose en el valor de la columna JOB_ID, segn 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 cdigo 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 cdigo 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 maysculas para la tabla departments.*/ select department_name ,upper(substr(department_name,1,5)) from departments; /* Mostrar el nombre, fecha de contratacin y el nmero de das 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 contratacin y la fecha del primer chequeo mdico, sabiendo que este se realiza cada seis meses, para los empleados con cdigo 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 ttulo del trabajador para todos aquellos cuya fecha de contratacin fueron en el ao 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, cdigo postal, nombre del pas y nombre de la regin. */ 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, direccin de la calle, nombre del pas y nombre de la regin, 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 aos*/ 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 King, 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 ao 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')"Ao 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 ao de haber sido contratado, pero debido a ciertos problemas se le pide que espere 3 meses para hacer efectiva 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);

También podría gustarte