lunes, 15 de abril de 2013

Clase 15-04-13


drop table Empleado cascade constraints;
drop table Departamento cascade constraints;
drop table Asignacion cascade constraints;

CREATE TABLE Empleado(
  num_emp number,
  nombre varchar2(40) constraint non_nn NOT NULL,
  tarifa_hora varchar2(20) constraint tar_nn NOT NULL,
  profesion varchar2(40) constraint pro_nn NOT NULL,
  constraint num_emp_pk primary key(num_emp));

CREATE TABLE Departamento(
  numero number,
  nombre varchar2(40) constraint nondep_nn NOT NULL,
  constraint numero_pk primary key(numero));

CREATE TABLE Asignacion(
  num_emp number, constraint num_emp_fk foreign key(num_emp)
  references Empleado(num_emp),
  fecha_ini varchar2(20) constraint fecha_ini_nn NOT NULL,
  numerodep number, constraint numerodep_fk foreign key(numerodep)
  references Departamento(numero));

INSERT into Empleado VALUES(1235,'Marcia Pérez','7000','Contador');
INSERT into Empleado VALUES(1412,'Carlos garcía','6500','Analista de Sistemas');
INSERT into Empleado VALUES(2920,'Ricardo Gómez','5800','Analista de Sistemas');
INSERT into Empleado VALUES(3231,'Patricio Morán','6300','Ingeniero en Informática');
INSERT into Empleado VALUES(2331,'Paula Marín','9000','Ingeniero en Informática');
INSERT into Empleado VALUES(4531,'Ricardo Pardo','6300','Contador');
INSERT into Empleado VALUES(8931,'ana Mora','7300','Analista de Sistemas');
INSERT into Empleado VALUES(3267,'Paula Morán','9200','Ingeniero Comercial');

INSERT into departamento VALUES(101014,'Finanzas');
INSERT into departamento VALUES(110115,'Contabilidad');
INSERT into departamento VALUES(101514,'Informática');
INSERT into departamento VALUES(110215,'Desarrollo');

INSERT into Asignacion VALUES(1235,'20/03/2013',110115);
INSERT into Asignacion VALUES(2920,'18/01/2013',110215);
INSERT into Asignacion VALUES(1412,'17/02/2013',110215);
INSERT into Asignacion VALUES(3231,'20/03/2013',101514);
INSERT into Asignacion VALUES(2331,'25/02/2013',110215);
INSERT into Asignacion VALUES(4531,'18/01/2013',101014);
INSERT into Asignacion VALUES(8931,'17/01/2013',110215);
INSERT into Asignacion VALUES(3267,'20/01/2013',101014);
INSERT into Asignacion VALUES(2920,'25/03/2013',101514);


--Mostrar los nombre de los empleados que ingresaron en el 20-03-13
select nombre, profesion
from empleado e
join Asignacion asi on e.num_emp = asi.num_emp
where fecha_ini = '20/03/2013';

--
select *
from Empleado e
join Asignacion asi on e.num_emp = asi.num_emp
join Departamento d on asi.numerodep = d.numero
order by e.nombre;

--Mostra la cantidad de dias que llevan trabaja
select nombre, sum(trunc(sysdate - to_date(fecha_ini, 'dd-mm-yyyy')))
from empleado e
join asignacion asi on e.num_emp = asi.num_emp
where lower(nombre) in ('carlos garcía', 'ana mora')
group by nombre
order by nombre;

select profesion, count(*)
from empleado
group by profesion;

select count(*)
from empleado
where tarifa_hora < (select avg(tarifa_hora)from empleado);

select nombre, tarifa_hora, tarifa_hora - (select avg(tarifa_hora)from empleado)as diferencia
from empleado;

--en una sola instruccion select mostrar el max y min de las tarifa_hora de los empleados
select max(tarifa_hora) as "tarifa maxima", min(tarifa_hora) as "tarifa minima" from empleado;

--mostrar el nombre del empleado y nombre de departamento cuya fecha de inicio de asignacion esta entre 01/01/2013
--al 01/03/2013, ambas fechas inclucive el resultado debe salir en minusculas debe usar where.
select e.nombre, d.nombre, fecha_ini
from empleado e, asignacion asi, departamento d
where e.num_emp = asi.num_emp
and asi.numerodep = d.numero
and to_date (fecha_ini)between '01/01/2013' and '01/03/2013';

--mostrar el nombre del departamento de los empleados que no pertenece al departamento del desarrollo

No hay comentarios.:

Publicar un comentario