Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Consultas SQL
Consultas SQL
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.
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
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.