Está en la página 1de 15

Utilizando Subconsultas

SQL FUNDAMENTALS I

OCA ORACLE DATABASE 11G CAP-8

SUBCONSULTA

Es una consulta anidad, es disenar y ejecutar otra consulta SQL dentro de una primer consulta. Partes donde podemos colocar sub consultas:
COLUMNA DE SELECT y FROM y WHERE y HAVING
y y

En el Where esta limitado a 255 subconsultas anidadadas.

SELECT sysdate Hoy, (select count(*) from departments) Dept_count, (select count(*) from employees) Emp_Count FROM dual;

SELECT last_name from employees WHERE employee_id in (select manager_id from employees);

EJERCICIO

Escriba una consulta que identifique el mayor salario de un empleado para un pais, utilice subconsulta en la clausula FROM
Select max(salary), country_id from y ( Select salary, department_id, location_id, country_id from employees natural join departments natural join locations) y Group by country_id
y

EJERCICIO

Mostrar todos los departamentos que tienen actualmente uno o mas empleados asignados.
Select department_name from departments where department_id in (select distinct department_id from employees); y Select department_name from departments d inner join employees e on e.department_id=d.department_id group by department_name
y

Puede utilizar los siguientes operadores


IN y NOT IN y ANY y ALL
y

Se recomienda asegurarse que las subconsultas no devuelvan valores nulos. Recuerde que el distinct NO QUITA LOS VALORES NULOS

Mostrar el salario promedio de un empleado por cada pais


Select avg(salary), country_id from (select salary, department_id, location_id, country_id from employees natural join departments natural join locations) GROUP BY country_id; y Reescriba esta consulta sin utilizar anidamiento
y

SUB CONSULTAS EN DML


Insert into sales_hist (select * from sales where date>sysdate); Delete from departments where department_id not in (select department_id from employees) Una subconsulta puede ser usada para seleccionar filas para insercion, pero NO en la clausula VALUES de insert

EJERCICIO

Escriba una consulta que identifique todos los empleados que trabajan en un departamento ubicado en reino unido. (United Kingdom) Escriba una consulta para identificar todos los empleados que ganan mas que el promedio, y que trabajan en departamentos cuyo nombre inicia con IT

UNA FILA Y MULTIPLES FILAS


Las consultas SINGLE ROW, devuelven una sola tupla, las consultas escalar devuelven una sola tupla y una sola columna Operadores para consultas SINGLE ROW
= y >= y <= y !=
y

> < <>

Operadores de multiples tuplas


y

IN, NOT IN, ANY, ALL

SELECT last_name from employees WHERE salary < (select avg(salary) from employees); SELECT p.last_name, p.department_id FROM employees p where p.salary < (select avg(s.salary) from employees s where s.department_id=p.department_id);

EJECUTE:

Select last_name from employees where salary > (select salary from employees where last_name=Tobias) order by last_name; Select last_name from employees where salary > (select salary from employees where last_name=Taylor) order by last_name; Select last_name from employees where salary > ALL (select salary from employees where last_name=Taylor) order by last_name;

EJERCICIO

Encuentre el puesto que tiene el mayor salario promedio


y y y y y

SELECT job_title FROM jobs NATURAL JOIN employees GROUP BY job_title HAVING avg(salary) = (Select max(avg(salary)) from employees group by job_id) ;

EJERCICIO

Realice una consulta que muestre los apellidos de los empleados que trabajan en un departamento dado, el nombre del departamento ser solicitado al usuario.
y

Select last_name from employees where department_id = (select department_id from departments where department_name = %&depto%) ;

Hoy instalare y digitare muchas frases del programa tecleo, pues mis compaeros necesitan mi ayuda y colaboracin.

También podría gustarte