You are on page 1of 15

PRESTATARIO

PRESTAMO
CLIENTE
SUCURSAL
CUENTA IMPOSITOR
Concatenacion. TO CHAR
elect 'carnet:'|| carnet ||' Nombre: '|| nombre from alumno

select nombre_sucursal, to_char(saldo_medio,'9999.99')
from (select nombre_sucursal, avg (saldo) saldo_medio
from cuenta group by nombre_sucursal)
where saldo_medio > 600


CASE
Select numero_cuenta, saldo,case
when saldo >= 0 and saldo<400 then 'a'
when saldo>=400 and saldo <= 500 then 'b'
else 'c'
end mensaje from cuenta


Select numero_cuenta, saldo,case
when saldo >= 0 and saldo<400 then 10+saldo*0.1
when saldo>=400 and saldo <= 500 then 15+saldo*0.15
else 20+saldo*0.20
end bonocuenta from cuenta
Subconsultas Comparacion de Conjuntos
En PL SQL
select distinct T.nombre_sucursal from sucursal T, sucursal S
where T.activos>S.activos and S.ciudad_sucursal= Aluche';

EN TRANSACT
select distinct T.nombre_sucursal
from sucursal as T, sucursal as S
where T. activos > S.activos and
S. ciudad_sucursal = Aluche

ALL , SOME equivale a ANY()
select nombre_sucursal from sucursal where activos> SOME (select
activos from sucursal where ciudad_sucursal = 'Aluche');
select nombre_sucursal from sucursal where activos> ANY (select
activos from sucursal where ciudad_sucursal = 'Aluche');
select nombre_sucursal from sucursal where activos> all (select
activos from sucursal where ciudad_sucursal = 'Aluche');

WITH
En PL SQL
with saldo_maximo as
(select max(saldo) valor
from cuenta )
select numero_cuenta
from cuenta, saldo_maximo
where cuenta.saldo = saldo_maximo.valor

With ctaimpositor as
(select nombre_cliente,sum(saldo) total from cuenta,impositor
where cuenta.numero_cuenta=impositor.numero_cuenta group by
nombre_cliente)
Select ctaimpositor.nombre_cliente
from cliente, ctaimpositor
where cliente.nombre_cliente = ctaimpositor.nombre_cliente and
Ctaimpositor. Total>1000



JOINS
Inner Join
Select * from prestamo inner join prestatario on
prestamo.numero_prestamo = prestatario.numero_prestamo
Left Outer Join
Select * from prestatario left outer join impositor on
prestatario.nombre_cliente = impositor.nombre_cliente;
Right Outer Join
Select * from prestatario right outer join impositor on
prestatario.nombre_cliente = impositor.nombre_cliente;
Full Outer Join
Select * from prestatario full outer join impositor on
prestatario.nombre_cliente = impositor.nombre_cliente;
Natural Join
Natural Join
Select * from prestatario natural join prestamo;


Consultas especiales

select sum(hombres) totalh,sum(mujeres) totalm from (
select count(*) hombres, 0 mujeres from alumno where
sexo='M'
union
select 0 hombres, count(*) mujeres from alumno where
sexo='F')
Departamentos que no tienen
empleados
Departamentos con empleados
Select distinct department_id from employees where
department_id is not null;
Todos los departamentos
select department_id from departments;
Departamentos sin empleados
select department_id from departments minus
Select distinct department_id from employees
where department_id is not null;
Departamentos que no tienen
empleados cont
select department_id,department_name from
departments
where department_id in (
select department_id from departments minus
Select distinct department_id from employees
where department_id is not null);
Departamentos que no tienen
empleados otra version con alias
select
departments.department_id,departments.dep
artment_name
from departments,(select department_id from
departments minus
Select distinct department_id from employees
where department_id is not null) sin_emp
where departments.department_id
=sin_emp.department_id;
Nombres Departamentos que tienen
6 empleados
select department_id,department_name from
departments
where department_id in (
Select department_id from employees group by
department_id having count(*)=6);
jefes
select employee_id manager_id,last_name
manager_last_name,first_name
manager_first_name,salary
manager_salary
from employees
where employee_id in
(select distinct manager_id employee_id
from employees where manager_id is not
null)
Empleados que ganan mas que su
jefe
with manager as
(select employee_id manager_id,last_name
manager_last_name,first_name manager_first_name,salary
manager_salary
from employees
where employee_id in
(select distinct manager_id employee_id from employees where
manager_id is not null))
select
employees.employee_id,employees.last_name,employees.first_nam
e,employees.salary,employees.manager_id,manager_last_name,m
anager_first_name,manager_salary
from manager, employees
where employees.manager_id=manager.manager_id and
employees.salary> manager_salary;
Otra version
select
employees.employee_id,employees.last_name,employees.first_name,em
ployees.salary,

manager2.manager_id,manager2.manager_last_name,manager2.manag
er_first_name, manager2.manager_salary
from employees,(
with manager as (select distinct manager_id from employees where
manager_id is not null)
select employee_id manager_id,last_name
manager_last_name,first_name manager_first_name,salary
manager_salary
from manager,employees where employees.employee_id
=manager.manager_id ) manager2
where EMPLOYEES.MANAGER_ID=manager2.MANAGER_ID and
employees.salary >manager2.manager_salary ;
INSERT
select * from cuenta

insert into cuenta values ('A-999', 'Navacerrada',1200)
DELETE
select * from cuenta
Delete from cuenta where numero_cuenta='A-999

select * from cuenta

UPDATE
select * from cuenta
update cuenta set saldo =1400 where numero_cuenta='A-999'

You might also like