lunes, 8 de abril de 2013


select to_char(sysdate,'month')
from dual;

select INSTR('la clase es grande','es',1,2)
from dual;

select next_day('25-03-2013','lunes')
from dual;

select next_day(sysdate, 'martes')
from dual;


select Rpad('texto original',20,'*')
from dual;

select Lpad('texto original',20,'*')
from dual;

select Ltrim('texto original','itzel')
from dual;

select round(123.355,2)
from dual;

---------------------------------------------------------------------
Drop table Proyecto cascade constraints;
Drop table Empleado cascade constraints;
Drop table Hora cascade constraints;

create table Proyecto (
codpro varchar2 (5),
nombre varchar2 (25),
area varchar2 (20),
oficina varchar2 (5)
);

alter table Proyecto
add constraint proyecto_pk primary key (codPro);

create table Empleado (
rut varchar2 (12),
nombre varchar2 (25),
fechnac date,
direccion varchar2 (35),
ciudad varchar2 (15),
telefono varchar2 (10)
);

alter table Empleado
add constraint empleado_pk primary key (rut);

create table Hora (
fecha date,
horas integer,
codpro varchar2(5),
rut varchar2 (12)
);

alter table Hora
add constraint Hora_fk_references_Proyecto foreign key (codPro)
references Proyecto (codPro);

alter table Hora
add constraint Hora_fk_references_empleado foreign key (rut)
references Empleado (rut);

/*
PROYECTO
101 WEB Ipaid Marketing 1
102 Plan Cuentas Contabilidad 2
103 Sala Clases Arquitectura 3
104 Capacitación RRHH 4

EMPLEADO
1-7 Luis Ponce 25-ene-1958 Cienfuegos 45 Santiago 5678654
2-8 Ana Zamora 30-mar-1960 null Santiago 6754345
3-5 Pedro Figueroa 1-ene-1970 Portales 890 Valparaíso null
4-6 Camila Espinoza 27-04-1980 cuevas 67 Rancagua null

HORA
2012-11-07 2 101 4-6
2012-11-07 4 101 1-7
2012-11-04 3 102 3-5
2012-12-03 6 103 3-5
*/

insert into Proyecto values ('101','WEB Ipaid','Marketing','1');
insert into Proyecto values ('102','Plan Cuentas','contabilidad','2');
insert into Proyecto values ('103','Sala Clases','Arquitectura','3');
insert into Proyecto values ('104','Capacitacion','RRHH','4');

insert into Empleado values ('1-7','Luis Ponce','25-ene-1958','cienfuegos 45','santiago','5678654');
insert into Empleado values ('2-8','Ana Zamora','30-mar-1960',null,'santiago','67543445');
insert into Empleado values ('3-5','Pedro Figueroa','01-ene-1970','portales 890','Valparaiso',null);
insert into Empleado values ('4-6','Camila Espinoza','27-04-1980','cuevas 67','Rancagua',null);

insert into Hora values (to_date('2012-11-07', 'yyyy-mm-dd'),2,'101','4-6');
insert into Hora values (to_date('2012-11-07', 'yyyy-mm-dd'),4,'101','1-7');
insert into Hora values (to_date('2012-11-04', 'yyyy-mm-dd'),3,'102','3-5');
insert into Hora values (to_date('2012-12-03', 'yyyy-mm-dd'),6,'103','3-5');

--Mostrar la cantidad de horas que hay que registrar por dia
select * from hora;

select fecha, sum(horas)
from hora
group by fecha;

--Mostrar el promedio de las edades de los empleados
select * from empleado;

select avg (trunc((sysdate - fechnac)/365))
from empleado;


select nombre, fechnac, trunc((sysdate - fechnac)/365)
from empleado;

--Mostrar los nombre d elos empleados que no tienen registrado
--telefonos en la base de datos

select *
from empleado
where telefono is null;

--Mostrar los nombres de los empleados que trabajaron
--en Noviembre del 2012

select nombre
from empleado e, hora h
where e.rut = h.rut
and fecha between '01-11-2012' and '30-11-2012';

select * from hora
where fecha between '01-11-2012' and '30-11-2012';

--Mostrar el codigo y nombre de los proyectos cuya area es
--Arquitecto o Marketing

select codpro, nombre
from proyecto
where area in ('Marketing','Arquitecto');

select codpro, nombre
from proyecto
where lower (area) in ('marketing','arquitecto');

--Crear una vista llamada VempCiudad que muestre la cantidad de los
--Empleados por ciudad, incluyendo solamente
--las ciudades de Santiago y Valparaiso

create view VempCiudad as
select upper (ciudad) ciudad, count(rut) cantidad
from Empleado
where lower (ciudad) in ('santiago', 'valparaiso')
group by ciudad;

select *from VempCiudad;

--Crear la vista VproyFigueroa que muestre los nombres
--de los proyectos en los que han trabajado Pedro Figueroa,
--eliminando los registros duplicados (Sin JOIN)

create view VproyFigueroa as
select distinct p.nombre
from empleado e, proyecto p, hora h
where h.codpro = p.codpro
and e.rut = h.rut
and lower(e.nombre) = 'pedro figueroa';


--Crear la vista VproyFigueroa que muestre los nombres
--de los empleados y el nombre de los proyectos, que se trabajaron el
--dia 2012-11-07 (Usando where, usar JOIN)

create view VEmpProy as
select p.nombre nombre_proy, e.nombre nombre_emp
from hora h
join proyecto p on p.codpro = h.codpro
join empleado e on e.rut = h.rut
where fecha = to_date('2012-11-07', 'yyyy-mm-dd');

select * from VEmpProy;

No hay comentarios.:

Publicar un comentario