Sunteți pe pagina 1din 13

Consultas SQL y definiciones

1.-Crear una consulta que permita mostrar el apellido y


salario de los empleados que ganan ms de 12 000
select *from employees;
SELECT e.last_name, e.salary
FROM employees e
where e.salary > 12000;
2.- Crear una consulta que permita mostrar el apellido y el nmero de departamento del
empleado No. 176
select e.last_name , d.department_id
from employees e , departments d
where e.department_id = d.department_id and e.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 e.last_name, e.salary
from employees e
where not(e.salary>= 500 and 12000>=e.salary);
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 e.last_name , jb.job_id , e.hire_date
from employees e, jobs jb
where jb.job_id = e.job_id and (e.hire_date between '20/02/03' and '01/05/05')
order by hire_date asc;
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 e.last_name, e.department_id
from employees e
where (e.department_id=20 or e.department_id=50)
order by e.last_name;

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, commission_pct, salary, department_id
from employees e
where salary between 5000 and 12000 and e.department_id in(10,20,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 e.first_name|| ' ' || e.last_name "Nombre Completo", e.hire_date
from employees e
where e.hire_date between '01-01-2004' and '31-12-2004';
8.- Muestre el nombre y el cdigo de trabajo de todos los empleados que no tienen un
supervisor (manager_id).
select first_name, last_name, job_id ,nvl(to_char(manager_id),'Sin supervisor')
Supervisor
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 e.last_name, e.salary, e.commission_pct
from employees e
where e.commission_pct is not null
order by e.last_name desc ;
select e.last_name, e.salary, e.commission_pct
from employees e
where e.commission_pct is not null
order by e.salary desc;

10.- Muestre el apellido de los empleados que tengan como tercera letra una a.
select last_name
from employees
where last_name like '__a%';
11.-Muestre el apellido de los empleados que tengan una a
y una e en su apellido
select e.last_name
from employees e
where (e.last_name like '%e%a%') or (e.last_name like '%a%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 like 'SA_REP' or job_id like 'ST_CLERK') and salary not in
(2500,3000,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.

CREATE VIEW SUELDO_EMPLEADO as


SELECT CONCAT(employee_id,CONCAT(first_name, last_name)) AS
NOMBRE_COMPLETO
, (salary + salary*commission_pct/100) AS SALARIO_TOTAL FROM EMPLOYEES
WHERE CEIL(MONTHS_BETWEEN(sysdate,EMPLOYEES.hire_date)) > 60;
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.

CREATE VIEW DATOS_EMPLEADO as


SELECT CONCAT(employee_id,CONCAT(e1.first_name, e1.last_name)), e1.email,
e1.job_id, d.department_name,
e2.first_name FROM (EMPLOYEES e1 INNER JOIN EMPLOYEES e2

ON CEIL(MONTHS_BETWEEN(sysdate, e1.hire_date)) <= 1 AND e1.manager_id =


e2.employee_id),
(DEPARMENTS d INNER JOIN EMPLOYEES e1
ON e1.deparment_id = d.deparment_id);
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.

CREATE VIEW PROYECCION as


SELECT DISTINCT e2.employee_id, e1.last_name, (e2.salary +
e2.salary*commission_pct/100) AS MENSUAL,
(e2.salary + e2.salary*commission_pct*12/100) AS ANUAL FROM EMPLOYEES e1
INNER JOIN EMPLOYEES e2 ON
e1.manager_id = e2.employee_id;
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 deparment_id, department_name, manager_id FROM ((DEPARMENTS
INNER JOIN LOCATION ON DEPARMETS.location_id = LOCATION.location_id)
INNER JOIN COUNTRY ON LOCATION.country_id = COUNTRY.country_id)
INNER JOIN REGION ON COUNTRY.region_id = REGION.region_id;
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 FIRST_NAME || SUBSTR(LAST_NAME,1,1) "NOMBRE CONCATENADO"
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 APELLIDOS, 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(DEPARTMENT_NAME,1,5)) DEPARTAMENT FROM
DEPARTMENTS;
23.-Mostrar el nombre, fecha de contratacin y el nmero de das trabajados.
SELECT FIRST_NAME NOMBRE, TRUNC(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 NOMBRE,TO_CHAR(HIRE_DATE, 'DD')|| ' de '||
TO_CHAR(HIRE_DATE, 'MONTH')|| ' de '||
TO_CHAR(HIRE_DATE, '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 NOMBRE, HIRE_DATE "FECHA CONTRATO",
ADD_MONTHS(HIRE_DATE,6) FROM EMPLOYEES WHERE DEPARTMENT_ID = 60;

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 "NOMBRE COMPLETO",
COMMISSION_PCT, DEPARTMENT_ID FROM EMPLOYEES
WHERE COMMISSION_PCT > 0 AND DEPARTMENT_ID NOT IN (80,50);
30.-Construya una sentencia que muestre lo siguiente para cualquier empleado

Cdigo
123

Empleado
juan Perez

Nombre_jefe
Luis Casas

SELECT E.EMPLOYEE_ID CODIGO, E.FIRST_NAME ||' '|| E.LAST_NAME


"EMPLEADO", M.FIRST_NAME ||' '|| M.LAST_NAME "NOMBRE JEFE"
FROM EMPLOYEES E, EMPLOYEES M WHERE E.MANAGER_ID =
M.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 NUMERO, LAST_NAME APELLIDO, SALARY SALARIO,
ROUND(SALARY*1.15) "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, LENGTH(FIRST_NAME) "LONGITUD
DEL NOMBRE" FROM EMPLOYEES WHERE SUBSTR(FIRST_NAME,1,1) IN
('J','A','M');
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 APELLIDO, CEIL(MONTHS_BETWEEN(SYSDATE,
HIRE_DATE)) "MONTHS WORKED" FROM EMPLOYEES
ORDER BY CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE));

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,TO_CHAR(HIRE_DATE,'DD')||' '||
TO_CHAR(HIRE_DATE,'DAY MONTH YYYY') "FECHA DE CONTRATACION",
TO_CHAR(NEXT_DAY(ADD_MONTHS(HIRE_DATE,6),'LUNES'),'DD')||' '||
TO_CHAR(NEXT_DAY(ADD_MONTHS(HIRE_DATE,6),'LUNES'),'DAY 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 APELLIDO, HIRE_DATE FECHA, TO_CHAR (HIRE_DATE, 'DAY')
"DAY" FROM EMPLOYEES ORDER BY TO_CHAR(HIRE_DATE, 'DAY');

36.Cree una consulta que muestre el apellido y las comisiones de los empleados. Si un
empleado no gana comisin, ponga No Commission. Etiquete la columna COMM.
SELECT LAST_NAME APELLIDO, DECODE(COMMISSION_PCT,NULL,'NO
COMISION', COMMISSION_PCT*SALARY) COM FROM EMPLOYEES;

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
AD_PRES
ST_MAN
IT_PROG
SA_REP
ST_CLERK
Ninguno de los anteriores

Grado
A
B
C
D
E
0

SELECT EMPLOYEE_ID CODIGO, LAST_NAME APELLIDO,

DECODE(

JOB_ID,'AD_PRES','A',
'ST_MAN','B','IT_PROG', 'C','SA_REP', 'D',
'ST_CLERK','E','0') GRADO
FROM EMPLOYEES ;

IS NOT NAN
La condicion de punto flotante determina si una expresion es infinita o es un resultado
indefinido de un operador ( que este, es un no numero or NAN)
ejemplo :
SELECT * from employee where salary IS NOT NAN;
IS NULL
En Oracle IS NULL condition es usado para testear para un valor NULL.
La sintaxis para Oracle es expresion IS NULL
Ejemplo:
SELECT * FROM suppliers
WHERE supplier_name IS NULL;

ORDER BY
Es usado para buscar los archivos en el resultado de la sentencia SELECT.
Ejemplo:
SELECT expressions
FROM tables
WHERE conditions
ORDER BY expression [ASC | |DESC ];
NOT
La condicional NOT( tambien llamado operador NOT) es usado para negar una
condicion en una sentencia SELECT, INSERT, UPDATE, or DELETE.
Ejemplo:
SELECT *
FROM customers
WHERE customer_name NOT IN ( IN, Hewlett Packard, Microsoft);
GROUP BY
La clausula SQL GROUP BY puede ser usada en una sentencia SELECT para
recoger datos a travez de multiples archivos y gurpos del resultados por una o mas
columnas.
Ejmeplo:
SELECT expression1, expression2, . expression_n.
aggregate_function (expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, expression_n;
NOT BETWEEN
Es usada para recuperar valores que no estan entre ese rango,es decir, negamos la
a la condicion BETWEEN, en un rango determinado.
Ejemplos
SELECT *
FROM employee
WHERE id NOT BETWEEN 1 AND 3;
HAVING
Es usada en combinaciones con la clausula GROUP BY para restringir los grupos
de filas de retorno para solo cuyos la condicion es TRUE.
Ejemplos:

SELECT expression1, expression2, expression_n


aggregate_function ( expression )
FROM tables
WHERE conditions
GROUP BY expression1, expression2, expression_n
HAVING condition;
NOT IN
Es usado para ayudar a reducir la necesidad de multiples condiciones OR en una
sentencia SELECT, UPDATE, or DELETE.
EJEMPLO:
expression NOT IN (value1, value2, value_n);
DISTINCT
ES usado para quitar duplicados desde el conjunto de resultados de una sentencia
SELECT.
Ejemplo:
SELECT DISTINCT expressions
FROM tables
WHERE conditions;
NOT LIKE
Permite usar comodines para realizar un patron de encuentro.
Ejemplo:
expression NOT LIKE pattern [ESCAPE escape_character ]
LEVEL
En Oracle, el termino LEVEL, se refiere a una pseudocolumna en Oracle que es usad
en una consulta jerarquica para identificar el nivel de jerarquia en formato
numerico.
Ejemplo:
SELECT EMPNO, MGR_ID, LEVEL
FROM EMPLOYEES E
START WITH MGR_ID IS NULL
CONNECT BY PRIOR EMPNO = MGR_ID;

ROWID
Para cada fila de la base de datos, la pseudocolumna ROWID retorna
la direccion de la fila.

Ejemplos:
SELECT ROWID, last_name
FROM employees
WHERE department_id = 20;
AND OR
En Oracle las condiciones AND y OR pueden ser combinadas en una
sentencia SELECT, INSERT, UPDATE o DELETE.
Cuando combinas estas condiciones, es importante usar soportes, asi la
base de datos tiene un orden de evaluar cada condicion.
Ejemplo:
WHERE condition1
AND condition2,

OR condition_n;
GUID
Si tu quieres generes una nueva Guid(Unica Identificacion) en SQL, podemos usar
la funcion NEWID().
Ejemplo:
SELECT NEWID()
GO
--This will return a new random uniqueidentifies e.g. E75B92A3 - 3299 - 4406 - A913C5CA196B3CAB

ALL
Es un operador el cual selecciona al conjunto total de una consulta.
Ejemplo con el operador UNION ALL
SELECT expression1, expression2, expression_n
FROM tables
WHERE conditions
UNION ALL
SELECT expression1, expression2, expression_n
FROM tables
WHERE conditions;
START WITH
ES usado para seleccionar datos que tiene un relacion jerarquica.
Ejemplo:

SELECT .. start with initial-condition connect by nocycl recurse-condition


ANY
Es usado para comparar un valor de una lista de subconsulta. Es necesario
ser precedido por =,>,<,<=,>= y seguido por una lista o subconsulta.
Ejemplo:
SELECT empno, sal
FROM emp
WHERE sal > ANY (2000, 3000, 4000);
CASE
Tiene la funcionalidad de una sentencia IF-THEN-ELSE.
Ejemplo:
CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
.
WHEN condition_n THEN result_n
ELSE result
END
BETWEEN
Es usado para recuperar valores entre un rango en una declaracion SELECT, INSERT,
UPDATE o DELETE.
Ejemplo:
SELECT *
FROM employees
WHERE employee_id BETWEEN 25 AND 100;
IN
Es usado para ayudar a reducir la necesidad de multiples condiciones OR en una
sentencia SELECT, INSERT, UPDATE o DELETE.
Ejemplo:
SELECT*
FROM customers
WHERE customer_name IN (IBM, Hewlett Packard, Microsoft);
EXISTS
Es usada en combinacion con subconsultas y es considerado ser encontrado,
si la subconsult retorna almenos una fila.
Ejemplo:
SELECT *

FROM suppliers
WHERE EXISTS ( SELECT*
FROM orders
WHERE suppliers.supplier_id=orders.supplier_id)
LIKE
Permite usar comodines para realizar un patron de encuentro.
Ejemplo:
SELECT supplier_name
FROM suppliers
WHERE supplier_name LIKE Hew%;
DECODE
Tiene la funcionalidad de una sentencia IF - THEN - ELSE
Ejemplo:
SELECT supplier_name,
DECODE( supplier_id, 100000, IBM
100001, Microsoft,
100002, Hewlett Packard,
Gateway) result
FROM suppliers;

S-ar putea să vă placă și