jueves, 30 de octubre de 2014

Supletorios



EN LA PRIMERA SESIÓN ENTRE 4 Y 8 DE NOV

AVISAR AL CORREO sakura.lcdq@gmail.com

REALIZAR EL PROCEDIMIENTO DE AUTORIZACIÒN EN LA COORDINACIÓN

Y TRAER EL RECIBO DE PAGO.



ARTÍCULO 51. De los exámenes supletorios. La solicitud para examen supletorio será presentada por el estudiante al coordinador académico del programa dentro de los dos (2) días siguientes a la fecha de presentación del parcial, acompañada de los comprobantes que fundamenten la petición; en caso de ser aprobada la solicitud, el examen deberá presentarse en la fecha establecida por el calendario académico, previo pago de los derechos respectivos.


De acuerdo a lo enunciado la Coordinación informará al docente qué estudiantes tienen supletorios aprobados y el estudiante debe cancelar el respectivo derecho pecuniario por valor de $23,922.00 (en caso de ser aprobado el supletorio por la Coordinación), generado por el sistema de pagos de la plataforma UTS. Luego de realizar el supletorio el docente debe entregar los recibos en la Coordinación.

PARCIALES


Buenas Noches

Estudiantes

Recuerden que si quieren subir nota deben traer la solución al parcial a mano y estar preparado para la sustentación y preguntas.












lunes, 27 de octubre de 2014

Ejercicos (Sin utilizar el PostgreSQL)





Entregue en el dropbox los siguientes ejercicios.

1. Realice los joins implícitos para unir todo el modelo.

2. Muestre los nombres de las asignaturas impartidas por el profesor Enrique Ortiz.

3. Muestre el nombre, apellido y nota de los estudiantes que realizaron un examen diseñado por Enrique Ortiz.

4. Muestre la cantidad de preguntas que componen el examen con el codigo 1020.

6. Muestre a los estudiantes que han realizado algún examen y que pertenecen al curso E001.

7. Muestre cuantos exámenes hay para la asignatura Base de Datos.

8. Muestre el promedio de la nota obtenida en el examen con el codigo 1020.

9. Muestre la nota máxima conseguida por un alumno en un examen diseñado por Enrique Ortiz.

9. Muestre la nota mínima conseguida por un alumno en un examen diseñado por Enrique Ortiz.

10. Muestre el nombre de la asignatura, el código del examen, el enunciado y la respuesta a la preguntas que hayan respondido el curso curso E001.


Solución - Tienda Informática



----------------------------------------------------------------------------------------------------
----------------------------------ELIMINA LAS TABLAS SI EXISTEN-------------------------------------
----------------------------------------------------------------------------------------------------

drop table if exists articulos;

drop table if exists fabricantes;


----------------------------------------------------------------------------------------------------
------------------------------------------CREA LAS TABLAS-------------------------------------------
----------------------------------------------------------------------------------------------------

create table fabricantes(

clavefabricante serial,
nombre varchar (30),
constraint pkfabricantes primary key (clavefabricante)
);

create table articulos(

clavearticulo serial,
nombrearticulo varchar (30),
precio decimal (10,3),
clavefabricante int4,
constraint pkarticulos primary key (clavearticulo)
);



----------------------------------------------------------------------------------------------------
-----------------------------------------ALTERA LAS TABLAS -----------------------------------------
----------------------------------------------------------------------------------------------------

alter table articulos

add constraint fkarticulos foreign key (clavefabricante)
references fabricantes (clavefabricante) on delete restrict on update restrict;


----------------------------------------------------------------------------------------------------
----------------------------------------ALIMENTA LAS TABLAS-----------------------------------------
----------------------------------------------------------------------------------------------------

insert into fabricantes values (1,'Kingston');

insert into fabricantes values (2,'Adata');
insert into fabricantes values (3,'Logitech');
insert into fabricantes values (4,'Lexar');
insert into fabricantes values (5,'Seagate');

insert into articulos values (1,'Teclado',100,3);

insert into articulos values (2,'Disco Duro 300 Gb',500,5);
insert into articulos values (3,'Mouse',80,3);
insert into articulos values (4,'Memoria USB',140,4);
insert into articulos values (5,'Memoria RAM',290,1);
insert into articulos values (6,'Disco Duro Extraible 250 Gb',650,5);
insert into articulos values (7,'Memoria USB',279,1);
insert into articulos values (8,'DVD Rom',450,2);
insert into articulos values (9,'CD Rom',200,2);
insert into articulos values (10,'Tarjeta de Red',180,3);



----------------------------------------------------------------------------------------------------
---------------------------------------------CONSULTAS----------------------------------------------
----------------------------------------------------------------------------------------------------

--a) Obtener todos los datos de los productos de la tienda


select * from articulos;



--b) Obtener los nombres de los productos de la tienda


select nombrearticulo from articulos;



--c) Obtener los nombres y precio de los productos de la tienda


select nombrearticulo, precio from articulos; 



--d) Obtener los nombres de los artículos sin repeticiones


select distinct nombrearticulo from articulos;



--e) Obtener todos los datos del  artículo cuya clave de producto es ‘5’


select * from articulos where clavefabricante= 5;



--f) Obtener todos los datos del  artículo cuyo nombre del producto es Teclado


select * from articulos where lower(nombrearticulo) = 'teclado';



--g) Obtener todos los datos de la Memoria RAM y memorias USB


select * from articulos where lower(nombrearticulo) in ('memoria ram', 'memoria usb');



--h) Obtener todos los datos de los artículos que empiezan con ‘M’


select * from articulos where lower(nombrearticulo) like 'm%';



--i) Obtener el nombre de los productos donde el precio sea  $ 100


select nombrearticulo from articulos where precio = 100;



--j) Obtener el nombre de los productos donde el precio sea mayor a $ 200


select nombrearticulo from articulos where precio > 200;



--k) Obtener todos los datos de los artículos cuyo precio este entre $100 y $350


select * from articulos where precio between 100 and 350;



--l) Obtener el precio medio de todos los productos (AVG)


select avg(precio) from articulos;



--m) Obtener el precio medio de los artículos cuyo código de fabricante sea 2


select avg(precio) from articulos where clavefabricante = 2;



--n) Obtener el nombre y precio de los artículos ordenados por Nombre


select nombrearticulo, precio from articulos order by nombrearticulo;



--o) Obtener todos los datos de los productos ordenados descendentemente por Precio


select * from articulos order by precio desc;



--p) Obtener el nombre y precio de los artículos cuyo precio sea mayor a $ 250 y ordenarlos descendentemente por precio y luego ascendentemente por nombre


select nombrearticulo,precio from articulos where precio > 250 order by precio desc, nombrearticulo asc;



--q) Añade un nuevo producto: Clave del producto 11, Altavoces de $ 120  del fabricante 2


insert into articulos values (11,'Altavoces',120,2);



--r) Cambia el nombre del producto 6 a ‘Impresora Laser’


update articulos set nombrearticulo = 'Impresora Laser' where clavearticulo = 6;



--s) Aplicar un descuento del 10% a todos los productos.


update articulos*1.10;



--t) Aplicar un descuento de $ 10 a todos los productos cuyo precio sea mayor o igual a $ 300


update articulos set precio = (precio-10) where precio>=300;



--u) Borra el producto numero 6


delete from articulos where clavearticulo=6;

Solución - Empleados & Departamentos


----------------------------------------------------------------------------------------------------
----------------------------------ELIMINA LAS TABLAS SI EXISTEN-------------------------------------
----------------------------------------------------------------------------------------------------

drop table if exists empleado;
drop table if exists departamento;

----------------------------------------------------------------------------------------------------
------------------------------------------CREA LAS TABLAS-------------------------------------------
----------------------------------------------------------------------------------------------------

create table departamento (
dptonro int4 not null,
dptonom varchar(30),
dptoubi varchar(40),
constraint pkdepartamento primary key (dptonro)
);

create table empleado (
empnro int4 not null,
empnom varchar(60),
empcar varchar(30),
empsup int4,
empfco date,
empsal decimal(11,2),
comm decimal(11,2),
dptonro int4,
constraint pkempleado primary key (empnro)
);

----------------------------------------------------------------------------------------------------
-----------------------------------------ALTERA LAS TABLAS -----------------------------------------
----------------------------------------------------------------------------------------------------

alter table empleado add constraint fkdptoemp foreign key (dptonro)
references departamento (dptonro) on delete restrict on update cascade;

alter table empleado add constraint fkemoemp foreign key (empsup)
references empleado (empnro) on delete restrict on update cascade;

----------------------------------------------------------------------------------------------------
----------------------------------------ALIMENTA LAS TABLAS-----------------------------------------
----------------------------------------------------------------------------------------------------

insert into departamento values(10,'Contabilidad','Bucaramanga');
insert into departamento values(20,'Investigacion','Cali');
insert into departamento values(30,'Ventas','Medellin');
insert into departamento values(40,'Operaciones','Bogota DC');

insert into empleado 
values (7839,'Cesar Andres Manrique','Presidente',null,'1981/11/17',5000000,null,10);
insert into empleado 
values (7698,'Isabella Arevalo','Director',7839,'1981/05/01',2850000,null,30);
insert into empleado 
values (7782,'Lina Salazar','Director',7839,'1981/06/09',2450000,null,10);
insert into empleado 
values (7566,'Milena Ortiz','Director',7839,'1981/04/02',2975000,null,20);
insert into empleado 
values (7788,'Samira Garcia','Analista',7566,'1987/07/13',3000000,null,20);
insert into empleado 
values (7902,'Edward Herrera','Anarlista',7566,'1981/12/03',3000000,null,20);
insert into empleado 
values (7369,'Alejandra Pinzon','Secretaria',7902,'1980/12/17',800000,null,20);
insert into empleado 
values (7876,'Tanya Muller','Secretaria',7788,'1987/07/13',1100000,null,20);
insert into empleado 
values (7900,'Jenny Ardila','Secretaria',7698,'1981/12/03',950000,null,30);
insert into empleado 
values (7934,'Luisa Anaya','Secretaria',7782,'1982/01/23',1300000,null,10);
insert into empleado 
values (7499,'Ligia Dominguez','Vendedor',7698,'1981/02/20',1600000,300000,30);
insert into empleado 
values (7521,'Maria Angel Puertas','Vendedor',7698,'1981/02/22',1250000,500000,30);
insert into empleado 
values (7654,'Sandra Quintero','Vendedor',7698,'1981/09/28',1250000,140000,30);
insert into empleado 
values (7844,'Alexander Nikos','Vendedor',7698,'1981/09/08',1500000,0,30);

----------------------------------------------------------------------------------------------------
---------------------------------------------CONSULTAS----------------------------------------------
----------------------------------------------------------------------------------------------------


--1.    Muestre los datos de los empleados.

select * from empleado;


--2.    Liste los departamentos.

select * from departamento;

--3.    Halle la información de los empleados con el cargo de Secretaria.

select * from empleado where empcar= 'Secretaria';


--4.    Halle la información de los empleados con el cargo de Secretaria, pero ordenados por el nombre.

select * from empleado where empcar= 'Secretaria' order by empnom;


--5.    Obtén el nombre y salario de los empleados.

select empnom,empsal from empleado;


--6.    Muestra los departamentos, ordenados por el nombre.

select * from departamento order by dptonom;


--7.    Muestra el nombre de los departamentos, ordenados de forma ascendente por la ciudad.

select * from departamento order by dptoubi asc;


--8.    Muestra el nombre de los departamentos, ordenados de forma descendente por la ciudad.

select * from departamento order by dptoubi desc;


--9.    Obtén el cargo y nombre de los empleados, ordenados por el salario.

select empcar,empnom from empleado order by empsal;


--10.   Lista el cargo y nombre de los empleados, ordenados por el cargo y salario.

select empcar,empnom from empleado order by empcar, empsal;


--11.   Obtén el cargo y nombre de los empleados, ordenados por el cargo inversamente y salario ascendente.

select empcar,empnom from empleado order by empcar desc, empsal asc;


--12.   Obtenga los salarios y las comisiones de los empleados en el departamento número 30.

select empsal, comm from empleado where dptnro = 30;
  

--13.   Obtenga los salarios y las comisiones de los empleados en el departamento número 30, ordenados por la comisión.

select empsal, comm from empleado where dptnro = 30 order by comm;

 --14.   Obtén las distintas comisiones que hay.

 select comm from empleado;


--15.   Obtenga los nuevos salarios que resultarían de sumar a los empleados del departamento 30 una gratificación de 100000.

select empsal+100000 as "Nuevo salarios" from empleado where dptnro=30;


--16.   Obtenga los nuevos salarios que resultarían de sumar a los empleados del departamento 30 una gratificación de 100000, pero mostrando también el salario anterior.

select empsal as "Salario anterior", empsal+100000 as "Nuevo salario" from empleado where dptnro=30;


--17.   Hallar los empleados que tienen una comisión superior a la mitad de su salario.

select empnom from empleado where comm > (empsal/2);


--18.   Hallar los empleados cuya comisión es menor o igual que el 25% del sueldo.

select empnom from empleado where comm <= (empsal*0.25);


--19.   Haga que en cada fila figure 'Nombre:' y 'Puesto:' anteponiéndose a su respectivo valor.

select concat ('Nombre:',empnom), concat('Puesto:',empcar) from empleado;


--20.   Hallar el salario y la comisión de los empleados cuyo número de empleado supera a 7500.

select empsal, comm from empleado where empnro > 7500;


--21.   Hallar el salario, la comisión y el salario total (salario + comisión) de los empleados con comisión, ordenados por el número del empleado.

select empsal, comm, empsal+comm as "Salario Total" from empleado where comm is not null order by empnro;


--22.   Hallar el nombre de los empleados que teniendo un salario superior a 1000000, tienen como director al empleado de código 7698.

select empnom  from empleado where empsup= 7698 and empsal > 1000000;


--23.   Calcula y muestra el porcentaje que supone la comisión sobre el salario total ordenado por el nombre.

select empnom,(100*coalesce(comm,0))/empsal as "% Comisión" from empleado where comm is not null order by empnom;


--24.   Muestra los empleados del departamento 10, cuyo nombre no contiene la cadena "anri".

select * from empleado where dptonro=10 and empnom not like '%anri%';


--25.   Buscar y mostrar los empleados que no son supervisados por ningún otro.

select empnom from empleado where empsup is null;


--26.   Muestra los nombres de los departamentos que no sean Ventas ni Investigación, ordenados por ubicación.

select dptonom from departamento where dptonom not in ('Ventas','Investigación') order by dptoubi;


--27.   Deseamos conocer el nombre de los empleados y el código del departamento de las secretarias que no trabajan en el departamento 10, y cuyo salario es superior a 800000, ordenado por fecha de contratación.

select empnom, dptonro from empleado where empcar='Secretaria' and dptonro<>10 and empsal>800000 order by empfco;


--28.    Halla los datos de los empleados que, o bien su nombre empieza por A y su salario es superior a 1000000, o bien reciben comisión y trabajan en el departamento 30.

select * from empleado where (empnom like 'A%' and empsal>1000000) or (comm<>null and dptonro=30);


--29.   Lista los nombres y fecha de contratación de aquellos empleados que no son vendedores.

select empnom, empfco from empleado where empcar<>'Vendedor';


--30.   Suponiendo que el año próximo la subida del sueldo de cada empleado será del 6%, y el siguiente del 7%, halla los nombres y el salario actual,  del año próximo y del siguiente, de cada empleado.

select empnom, empsal as "Salario", empsal + coalesce(comm,0) as "Salario total", empsal*1.06 as "Salario 2015", empsal*1.07 as "Salario 2016" from empleado;

Solución a Pedidos




----------------------------------------------------------------------------------------------------
----------------------------------ELIMINA LAS TABLAS SI EXISTEN-------------------------------------
----------------------------------------------------------------------------------------------------

Drop table if exists detalleordenes;

Drop table if exists ordenes;
Drop table if exists empleados;
Drop table if exists clientes;
Drop table if exists productos;
Drop table if exists proveedores;
Drop table if exists categorias;


----------------------------------------------------------------------------------------------------
------------------------------------------CREA LAS TABLAS-------------------------------------------
----------------------------------------------------------------------------------------------------

create table empleados (

empleadoid int4 not null,
nombre varchar(30) null,
apellido varchar(30) null,
fechanac date null,
reportaa int4 null,
extension int4 null,
constraint pkempleados primary key (empleadoid));

create table proveedores(

proveedorid int4 not null,
nombreprov varchar(50) not null,
contacto varchar(50) not null,
celuprov varchar(12) null,
fijoprov varchar(12) null,
constraint pkproveedores primary key (proveedorid ) );

create table categorias(

categoriaid int4 not null,
nombrecat varchar(50) not null,
constraint pkcategorias primary key (categoriaid) ) ;

create table clientes(

clienteid int4 not null,
cedularuc varchar(10) not null,
nombrecia varchar(30) not null,
nombrecontacto varchar(50) not null,
direccioncli varchar(50) not null,
fax varchar(12) null,
email varchar(50) null,
celular varchar(12) null,
fijo varchar(12) null,
constraint pkclientes primary key (clienteid) );

create table ordenes(

ordenid int4 not null,
empleadoid int4 not null,
clienteid int4 not null,
fechaorden date not null,
descuento int4 null,
constraint pkordenes primary key (ordenid) );

create table detalleordenes(

ordenid int4 not null,
detalleid int4 not null,
productoid int4 not null,
cantidad int4 not null,
constraint pkdetalleordenes primary key (ordenid,detalleid ) );

create table productos(

productoid int4 not null,
proveedorid int4 not null,
categoriaid int4 not null,
descripcion varchar(50) null,
preciounit decimal (10,1) not null,
existencia int4 not null,
constraint pkproductos primary key (productoid )) ;


---------------------------------------------------------------------------------------------
---------------------------------ALTERA LAS TABLAS -------------------------------------
--------------------------------------------------------------------------------------------

alter table ordenes

add constraint fkordenesclienordclientes foreign key(clienteid)
references clientes (clienteid)
on delete restrict on update restrict;

alter table ordenes add constraint fkordenesempleordempleado foreign key(empleadoid)

references empleados (empleadoid)
on delete restrict on update restrict;

alter table detalleordenes add constraint fkdetalleordendetordenes foreign key(ordenid)

references ordenes (ordenid)
on delete restrict on update restrict;

alter table detalleordenes add constraint fkdetalleproddetaproducto foreign key(productoid)

references productos (productoid)
on delete restrict on update restrict;

alter table productos add constraint fkproductocateprodcategori foreign key(categoriaid)

references categorias (categoriaid)
on delete restrict on update restrict;

alter table productos add constraint fkproductoprovprodproveedo foreign key(proveedorid)

references proveedores (proveedorid)
on delete restrict on update restrict;

alter table empleados add constraint fkempleadoreporta foreign key(reportaa)

references empleados (empleadoid)
on delete restrict on update restrict;



----------------------------------------------------------------------------------------------------
----------------------------------------ALIMENTA LAS TABLAS-----------------------------------------
----------------------------------------------------------------------------------------------------


insert into categorias (categoriaid, nombrecat) values (100, 'Carnicos');

insert into categorias (categoriaid, nombrecat) values (200, 'Lacteos');
insert into categorias (categoriaid, nombrecat) values (300, 'Limpieza');
insert into categorias (categoriaid, nombrecat) values (400, 'Higine personal');
insert into categorias (categoriaid, nombrecat) values (500, 'Medicinas');
insert into categorias (categoriaid, nombrecat) values (600, 'Cosmeticos');
insert into categorias (categoriaid, nombrecat) values (700, 'Revistas');

insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 

values (10, 'Don Diego', 'Manuel Andrade', ' 317430298','6324456');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (20, 'Pronaca', 'Juan Perez', ' 3157179535','6512456');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (30, 'Tony', 'Jorge Brito', ' 3005087876','6124456');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (40, 'Miraflores', 'Maria Paz', ' 3202015320','6245879');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (50, 'Almay', 'Pedro Gonzalez', '3177654567','6207190');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (60, 'Revlon', 'Monica Salas', '3150992456','6260986');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (70, 'Yanbal', 'Bety Arias', '3008124458','6245087');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (120, 'Juris', 'Sergio Ortiz', '3179923417','6212456');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (80, 'Cleaner', 'Manuel Lopez', '3159923467','6214456');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (90, 'Bayer', 'Lucas Salazar', '3009923567','6224456');
insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) 
values (110, 'Palmolive', 'Gustavo Rodriguez', '3209924567','6124456');

insert into productos values (1,10,100,'Salchichas vienesas',2600,200);

insert into productos values (2,10,100,'Salami de ajo',3600,300);
insert into productos values (3,10,100,'Carne para asado',4700,400);
insert into productos values (4,20,100,'Salchichas de pollo',2900,200);
insert into productos values (5,20,100,'Jamon de pollo',2800,100);
insert into productos values (6,30,200,'Yogurt natural',4300,80);
insert into productos values (7,30,200,'Leche chocolate',1600,90);
insert into productos values (8,40,200,'Yogurt de sabores',1600,200);
insert into productos values (9,40,200,'Crema de leche',3600,30);
insert into productos values (10,50,600,'Base de maquillaje',14700,40);
insert into productos values (11,50,600,'Rimmel',12900,20);
insert into productos values (13,60,600,'Sombra de ojos',9800,100);

set datestyle to dmy;


insert into empleados values (1,'Juan', 'Cruz', '18/01/67',null, 231);

insert into empleados values (2,'Mario', 'Sanchez', '01/03/79',1,144);
insert into empleados values (3,'Veronica', 'Arias', '23/06/77',1, 234);
insert into empleados values (4,'Pablo', 'Cely', '28/01/77',2, 567);
insert into empleados values (5,'Diego', 'Andrade', '15/05/70',2, 890);
insert into empleados values (6,'Juan', 'Andrade', '17/11/76',3, 230);
insert into empleados values (7,'Maria', 'NoVoa', '21/12/79',3, 261);

insert into clientes values (1,'1890786576','supermercado estrella','juan alban','av.amazonas',null,null,null,null);

insert into clientes values (2,'1298765477','el rosado','maria cordero','av.ael inca',null,null,null,null);
insert into clientes values (3,'1009876567','distribuidora prensa','pedro pinto','el pinar',null,null,null,null);
insert into clientes values (4,'1876090006','su tienda','pablo ponce','av.amazonas',null,null,null,null);
insert into clientes values (5,'1893456776','supermercado dorado','lorena paz','av.6 diciembre',null,null,null,null);
insert into clientes values (6,'1678999891','mi comisariato','rosario utreras','av.amazonas',null,null,null,null);
insert into clientes values (7,'1244567888','supermercado descuento','leticia ortega','av.la prensa',null,null,null,null);
insert into clientes values (8,'1456799022','el descuento','juan torres','av.patria',null,null,null,null);
insert into clientes values (9,'1845677777','de luise','jorge parra','av.amazonas',null,null,null,null);
insert into clientes values (10,'183445667','yarbantrella','pablo polit','av.republica',null,null,null,null);

insert into ordenes values(1,3,4,'17/06/07', 5);

insert into ordenes values(2,3,4,'02/06/07', 10);
insert into ordenes values(3,4,5,'05/06/07', 6);
insert into ordenes values(4,2,6,'06/06/07', 2);
insert into ordenes values(5,2,7,'09/06/07', null);
insert into ordenes values(6,4,5,'12/06/07', 10);
insert into ordenes values(7,2,5,'14/06/07', 10);
insert into ordenes values(8,3,2,'13/06/07', 10);
insert into ordenes values(9,3,2,'17/06/07', 3);
insert into ordenes values(10,2,2,'18/06/07', 2);

insert into detalleordenes values(1,1,1,2);

insert into detalleordenes values(1,2,4,1);
insert into detalleordenes values(1,3,6,1);
insert into detalleordenes values(1,4,9,1);
insert into detalleordenes values(2,1,10,10);
insert into detalleordenes values(2,2,13,20);
insert into detalleordenes values(3,1,3,10);
insert into detalleordenes values(4,1,9,12);
insert into detalleordenes values(5,1,1,14);
insert into detalleordenes values(5,2,4,20);
insert into detalleordenes values(6,1,3,12);
insert into detalleordenes values(7,1,11,10);
insert into detalleordenes values(8,1,2,10);
insert into detalleordenes values(8,2,5,14);
insert into detalleordenes values(8,3,7,10);
insert into detalleordenes values(9,1,11,10);
insert into detalleordenes values(10,1,1,5);


----------------------------------------------------------------------------------------------------
---------------------------------------------CONSULTAS----------------------------------------------

----------------------------------------------------------------------------------------------------

--1. Mostrar la información de los productos.


select * from productos;



--2. Obtener la información de los empleados.


select * from empleados;



--3. Listar los proveedores existentes.


select * from proveedores;



--4. Mostrar la descripción y existencias de los productos.


select descripcion, existencia from productos;



--5. Mostrar la descripción y existencias de los productos ordenados por descripción.


select descripcion, existencia from productos order by descripcion;



--6. Mostrar la descripción y existencias de los productos ordenados por las existencias de forma descendente y descripción ascendente.


select descripcion, existencia from productos order by existencia desc, descripcion asc;



--7. Agregar la columna ciudad a la tabla proveedor.


alter table proveedores add column ciudad varchar (20);



--8. Actualiza la información de los proveedores de la siguiente forma: 3 en Bucaramanga, 2 en Bogotá DC y el resto en Medellín.


update proveedores set ciudad = 'Bucaramanga' where proveedorid in (10, 20, 30);


update proveedores set ciudad = 'Bogota D.C' where proveedorid in (40, 50);


update proveedores set ciudad = 'Medellín' where ciudad is null;



--9. Muestre el identificador, nombre y contacto de los proveedores.


select proveedorid, nombreprov, contacto from proveedores;



--10. Muestre nombre y contacto de los proveedores ubicados en la ciudad de Bucaramanga y ordenados por el nombre.


select nombreprov, contacto from proveedores where lower(ciudad) = 'bucaramanga' order by nombreprov;



--11. Obtenga la información de los productos cuyas existencias son mayores a 100.


select * from productos where existencia > 100;



--12. Obtenga ahora los productos cuyas existencias son mayores a 100 pero menores a 300.


select * from productos where existencia > 100 and existencia < 300;



--13. Muestre solo los productos cuyas existencias son menores de 90 o los mayores o iguales a 200.


select * from productos where existencia < 90 and existencia <= 200;



--14. Liste los empleados cuyos nombres empiezan por la consonante 'p'.


select * from empleados where lower(nombre) like 'p%';



--15. Liste los empleados cuyos nombres empiezan por la consonante 'm' independiente si está escrito en mayúscula o minúscula.


select * from empleados where lower(nombre) like 'm%';



--16. Muestra los empleados que tienen la vocal 'a' en la segunda letra del nombre.


select * from empleados where lower(nombre) like '_a%';



--17. Obtenga los productos que tienen 'll' en su descripción.


select * from productos where lower(descripcion) like '%ll%';



--18. Obtenga los productos que tienen 'll' en su descripción y la categoría es 100 que es Cárnicos.


select * from productos where lower(descripcion) like '%ll%' and categoriaid = 100;



--19. Agregue el campo salario a la tabla empleados que sea un decimal de 10 dígitos donde uno de ellos es decimal.


alter table empleados add column salario decimal(10,1);



--20. Actualiza los salarios de la siguiente forma, 3 empleados ganan: 617000, 2 ganan 1200000 y el resto gana 2000000.


update empleados set salario = 617000 where empleadoid in (5, 6, 7);


update empleados set salario = 1200000 where empleadoid in (3, 4);


update empleados set salario = 2000000 where salario is null;



--21. Muestre los empleados que le reportan a Juan Cruz.


select * from empleados where reportaa = 1;



--22. Muestre los empleados que no le reportan a nadie.


select * from empleados where reportaa is null;



--23. Agregue la columna edad a la tabla empleado.


alter table empleados add column edad int2;



--24. Utilizando la fecha de nacimiento calcule la edad y actualice la información.


update empleados set edad = ((current_date - fechanac)/365);



--25. La empresa está estudiando la posibilidad de subir los salarios en un 5%, 8% y 11% a los empleados que actualmente ganen el salario mínimo,

--por lo tanto calcule y muestre utilizando un alias para ver como quedarían sin afectar la tabla.;

select distinct salario, salario * 1.05 as "5%", salario * 1.08 as "8%", salario * 1.11 as "11%" from empleados where salario = 617000;



--26. Teniendo en cuenta el estudio la empresa decidió aumentar en un 5% los salarios para los empleados que actualmente ganan un mínimo.


update empleados set salario = salario * 1.05 where salario = 617000;



--27. Realice un informe donde muestre el identificador, nombre, apellido y el salario ordenado por este último atributo.


select empleadoid, nombre, apellido, salario from empleados order by salario;



--28. Muestre los empleados cuya fecha de cumpleaños esta entre enero y junio.


select * from empleados where extract(month from fechanac) >=1 and extract(month from fechanac) <= 6;



--29. Arreglar el registro de la tabla de empleado donde la edad es un valor negativo; cambie la fecha de nacimiento a 1985-04-02 y re-calcule la edad.


update empleados set fechanac = '1985-04-02' where edad < 0;


update empleados set edad = ((current_date - fechanac)/365);



--30. Agregar una columna a la tabla de empleado que almacene la fecha de inicio al trabajo.


alter table empleados add column fecini date;



--31. Actualiza la fecha de inicio al trabajo en la tabla de empleados (Recuerda que la fecha de inicio de trabajo debe ser mayor a la fecha de nacimiento pero menor que la fecha actual).


update empleados set fecini = '2004-02-04' where empleadoid=1;

update empleados set fecini = '2004-02-27' where empleadoid=2;
update empleados set fecini = '2004-03-03' where empleadoid=3;
update empleados set fecini = '2004-03-10' where empleadoid=4;
update empleados set fecini = '2004-03-15' where empleadoid=5;
update empleados set fecini = '2004-03-15' where empleadoid=6;
update empleados set fecini = '2004-02-10' where empleadoid=7;