Por motivo de las distintas fechas de entrega
jueves, 27 de noviembre de 2014
Taller 3
PARTE UNO
JOINS
1. Realiza los Joins para relacionar las tablas de los siguientes modelos:
Reserva
Join 1: cliente.id_clie=reserva.id_cli;
Join 2: reserva.id_res=vehiculo.id_res;
Join 3: vehiculo.placa=garaje.placa;
Academia de Clases
Join 1: empresa.nitemp=alumno.nitemp;
Join 2: profesor.idpro=grupo.idpro;
Join 3: diplomado.coddip=grupo.coddip;
Join 4: alumno.idalu=asistir.idalu
Join 5: grupo.numgru=asistir.numgru
Almacén
Join 1: almacen.numalm=estanteria.numalm;
Join 2: pieza.tippie=estanteria.tippie;
Join 3: pieza.molpie=estanteria.molpie;
Join 4: pieza.tippie= componerse.tippie1
Join 5: pieza.molpie= componerse.molpie1
Join 6: pieza.tippie=componerse.tippie2;
Join 7: pieza.molpie= componerse.molpie2;
Porque siete joins, porque la llave primaria de pieza es compuesta.
Compañía
Join 1: departamento.iddpto=empleado.iddpto;
Join 2: departamento.iddpto=proyecto.iddpto;
Join 3: empleado.rutemp=trabaja.rutemp;
Join 4: proyecto.idpro=trabaja.rutemp;
Diario
Join 1: edicion.numedi=seccion.numedi;
Join 2: seccion.idsec=pagina.idsec;
Join 3: pagina.idpag=articulo.idpag;
Join 4: autor.idaut=articulo.idaut;
Revista Hemisferio
Join 1: usuario.cod_usu=anuncio.cod_usu;
Join 2: usuario.cod_usu=articulo.cod_usu;
Join 3: articulo.cod_art=clasifica.cod_art;
Join 4: categoria.cod_cat=clasifica.cod_cat;
Join 5: usuario.cod_usu=ficha.cod_usu
--Script “Pedidos”
--https://app.box.com/s/9714y7zjuv4tq93s5v9b
--2. Utilizando el script de pedidos responder las siguientes
--consultas utilizando joins para relacionar las tablas del modelo.
--a. Muestre las órdenes generadas que contengan productos de
--la categoría de cárnicos.
select ordenes.*
from ordenes,detalleordenes,productos,categorias
where ordenes.ordenid=detalleordenes.ordenid and
productos.productoid=detalleordenes.productoid and
categorias.categoriaid=productos.categoriaid and
categorias.nombrecat='Carnicos';
--b. Muestre las ordenes solicitadas por el implado Mario Sanchez
--que fueron realizadas en la primera quincena de junio de 2007
select ordenes.*
from empleados,ordenes
where empleados.empleadoid=ordenes.empleadoid and
empleados.nombre='Mario' and
empleados.apellido='Sanchez' and
extract(day from fechaorden) between 1 and 15 and
extract(month from fechaorden)=6 and
extract(year from fechaorden)=2007;
select ordenes.*
from empleados,ordenes
where empleados.empleadoid=ordenes.empleadoid and
empleados.nombre='Mario' and
empleados.apellido='Sanchez' and
fechaorden between '01-06-2007' and '15-06-2007' ;
--c. Liste el nombre y las existencias de los productos suministrados
--por el proveedor Don Diego y que la cantidad en el detalle de la orden
--sea superior a 10.
select productos.descripcion,productos.existencia
from proveedores,productos,detalleordenes,ordenes
where proveedores.proveedorid=productos.proveedorid and
productos.productoid=detalleordenes.productoid and
ordenes.ordenid=detalleordenes.ordenid and
proveedores.nombreprov='Don Diego' and
detalleordenes.cantidad>10;
--d. Obtenga la identificación de la orden, la fecha de la orden,
--el nombre del empleado que realizo la orden, el cliente quien solicito
--la orden y que en su detalle contiene el producto con la descripción de
--Rimmel.
select ordenes.ordenid,
ordenes.fechaorden,
empleados.nombre,
clientes.nombrecontacto,
productos.descripcion as "Producto Buscado"
from empleados,ordenes,clientes,detalleordenes,productos
where empleados.empleadoid=ordenes.empleadoid and
clientes.clienteid=ordenes.ordenid and
ordenes.ordenid=detalleordenes.ordenid and
productos.productoid=detalleordenes.productoid and
productos.descripcion='Rimmel';
--e. Muestra los nombres de los clientes que hayan solicitado
--productos suministrados por el proveedor Almay y que pertenezcan a la
--categoría de Cosmeticos.
select clientes.nombrecontacto,productos.descripcion
from clientes,ordenes,detalleordenes,productos,proveedores,categorias
where clientes.clienteid=ordenes.ordenid and
ordenes.ordenid=detalleordenes.ordenid and
productos.productoid=detalleordenes.productoid and
categorias.categoriaid=productos.categoriaid and
proveedores.proveedorid=productos.proveedorid and
proveedores.nombreprov='Almay' and
categorias.nombrecat='Cosmeticos';
--Script “Tienda Informática”
--https://app.box.com/s/htt6jpmr4d6azftn2hxr
--3. Utilizando el script de tienda informática responder las siguientes
--consultas utilizando joins para relacionar las tablas del modelo.
--f. Obtener la clave y precio del articulo donde su nombre tiene USB
--y fue suministrada por el fabricante Kingston.
select articulos.clavearticulo,articulos.precio
from articulos,fabricantes
where fabricantes.clavefabricante=articulos.clavefabricante and
articulos.nombrearticulo like '%USB%' and
fabricantes.nombre='Kingston';
--g. Obtener todos los datos de los fabricantes donde el precio
--artículos esté entre $100 y $350
select distinct fabricantes.clavefabricante,fabricantes.nombre
from fabricantes,articulos
where fabricantes.clavefabricante=articulos.clavefabricante and
articulos.precio between 100 and 350;
--h. Obtener un listado de artículos, incluyendo el nombre del
--artículo, su precio, y el nombre de su fabricante.
select articulos.nombrearticulo,articulos.precio,fabricantes.nombre
from fabricantes,articulos
where fabricantes.clavefabricante=articulos.clavefabricante;
--i. Obtener un listado completo de artículos, incluyendo los
--de su fabricante.
select *
from articulos,fabricantes
where fabricantes.clavefabricante=articulos.clavefabricante;
--j. Muestre la información de los artículos y fabricantes,
--ya sea el precio de los productos sean menores a 200 o que comienzan por M
--y el fabricante sea Kingston.
select *
from articulos,fabricantes
where fabricantes.clavefabricante=articulos.clavefabricante and
(articulos.precio<200 or (nombrearticulo like 'M%' and fabricantes.nombre='Kingston'));
--PARTE DOS
--FUNCIONES DE AGREGADO
--AVG – SUM – COUNT – MAX – MIN
--Script “Pedidos”
--https://app.box.com/s/9714y7zjuv4tq93s5v9b
--4. Utilizando el script de pedidos responder las siguientes consultas
--utilizando joins para relacionar las tablas del modelo, funciones de agregado
--y subconsultas para responder los ítems.
--k. Muestre el nombre de la categoría y cantidad de productos que pertenecen a ella.
select categorias.nombrecat,count(productoid)
from categorias,productos
where categorias.categoriaid=productos.categoriaid
group by categorias.nombrecat;
--l. Muestre el precio promedio de las distintas categorías.
select categorias.nombrecat,trunc(avg(productos.preciounit),2) as "AVG x Categoria"
from categorias,productos
where categorias.categoriaid=productos.categoriaid
group by categorias.nombrecat;
--m. Obtenga la cantidad de clientes que hayan solicitado productos
--suministrados por el proveedor Almay y que pertenezcan a la categoría de Cosmeticos.
select count(clientes.clienteid)
from clientes,ordenes,detalleordenes,productos,categorias,proveedores
where clientes.clienteid=ordenes.clienteid and
ordenes.ordenid=detalleordenes.ordenid and
productos.productoid=detalleordenes.productoid and
categorias.categoriaid=productos.categoriaid and
proveedores.proveedorid=productos.proveedorid and
proveedores.nombreprov='Almay' and
categorias.nombrecat='Cosmeticos';
--n. Muestre las existencias totales según el proveedor que surtió el producto.
select count(productos.existencia)
from proveedores,productos
where proveedores.proveedorid=productos.proveedorid
group by proveedores.nombreprov;
--o. Muestre el nombre del proveedor y el precio del producto más costoso.
select proveedores.nombreprov,max(productos.preciounit)
from proveedores,productos
where proveedores.proveedorid=productos.proveedorid
group by proveedores.nombreprov;
--Script “Tienda Informática”
--https://app.box.com/s/htt6jpmr4d6azftn2hxr
--5. Utilizando el script de tienda informática responder las siguientes
--consultas utilizando joins para relacionar las tablas del modelo, funciones de agregado
--y subconsultas para responder los ítems.
--p. Obtener el precio medio de los productos por cada fabricante, mostrando
--el nombre del fabricante.
select fabricantes.nombre, trunc(avg(articulos.precio),2)
from articulos,fabricantes
where fabricantes.clavefabricante=articulos.clavefabricante
group by fabricantes.nombre;
--q. Obtener los nombres de los fabricantes de los productos cuyo
--precio medio sea superior o igual a 60. (Sub)
select fabricantes.nombre
from articulos, fabricantes
where (select avg(articulos.precio) from articulos)>=60
group by fabricantes.nombre;
--r. Muestre el nombre del fabricante y la cantidad de productos que provee.
select fabricantes.nombre,
count(articulos.clavearticulo) as "CantidadProductos"
from articulos,fabricantes
where fabricantes.clavefabricante=articulos.clavefabricante
group by fabricantes.nombre;
--s. Obtener el nombre y precio del articulo más barato. (Sub)
select articulos.nombrearticulo,articulos.precio
from articulos
where precio=(select min(articulos.precio) from articulos);
--t. Obtener una lista con el nombre y precio de los artículos más caros de cada proveedor,
--incluyendo el nombre del fabricante.
select fabricantes.nombre,articulos.nombrearticulo,precio
from articulos,fabricantes
where precio=(select max(articulos.precio)
from articulos
where fabricantes.clavefabricante=articulos.clavefabricante);
--Script “Cliclista”
--https://app.box.com/s/rclpz26ndhli9svvq4so
--6. Utilizando el script de ciclista responder las siguientes consultas utilizando joins
-- para relacionar las tablas del modelo, funciones de agregado y subconsultas para responder los ítems.
--u. Obtener el nombre del ciclista más joven
select nombre
from ciclista
where edad=(select min(edad) from ciclista);
--v. Obtener el número de ciclistas de cada equipo
select count(dorsal)
from ciclista
group by nomeq;
--w. Obtener el nombre de los equipos que tengan más de 5 ciclistas.
select nomeq
from ciclista
group by nomeq
having count(dorsal)>5;
--x. Obtener el nombre de los ciclistas que han ganado más de un puerto
select ciclista.nombre, count(puerto.dorsal)
from ciclista,puerto
where ciclista.dorsal=puerto.dorsal
group by puerto.dorsal,ciclista.nombre
having count(puerto.dorsal)>1;
--y. Nombre de los ciclistas que no han ganado ninguna etapa.
select nombre
from ciclista
where dorsal not in(select dorsal from etapa);
--Script “Empleado & Departamento”
--https://app.box.com/s/aet7i391g07ydnlz0ovt
--7. Utilizando el script de Empleado y Departamento responder las siguientes consultas
--utilizando joins para relacionar las tablas del modelo, funciones de agregado y subconsultas
--para responder los ítems.
--z. Para los empleados que tengan como jefe a un empleado con código mayor que el suyo,
--obtén los que reciben de salario más de 1000 y menos de 2000, o que están en el departamento 30.
select *
from empleado
where empsup>empnro and ((empsal>1000 and empsal<2000)or (dptonro=30));
--aa. Obtén el salario más alto de la empresa, el total destinado a comisiones
--y el número de empleados.
select max(empsal) as "Salario Maximo",
sum(comm) as "Sumatorial de Comisiones" ,
count(empnro) as "Cuantos Empleados"
from empleado;
--bb. Halla el salario más alto, el más bajo, y la diferencia entre ellos.
select max(empsal) as "Salario Maximo",
min(empsal) as "Salario Minimo",
(max(empsal)-min(empsal)) as "Resta entre el Max y Min"
from empleado;
--cc. Halla los empleados cuyo salario supera o coincide con la media del salario de la empresa.
select *
from empleado
where empsal>=(select avg(empsal) from empleado);
--dd. ¿Cuántos empleos diferentes, cuántos empleados, y cuantos salarios diferentes
--encontramos en el departamento 30, y a cuánto asciende la suma de salarios de dicho departamento?
select count(distinct empcar) as "Cuantos Empleos",
count(empnom)"Cuantos Empleados",
count(distinct empsal)"Salarios Diferentes",
sum(empsal)"Sumatorias Salarios"
from empleado
where dptonro=30;
--ee. ¿Cuántos empleados tienen comisión?
select count(comm)
from empleado
where comm>0;
Taller 2
-- Muestre la información de los proveedores ubicados en la ciudad de Bucaramanga o Cali.
-- or
select * from proveedor
where lower(ciudad) = lower('Bucaramanga') or ciudad='cali';
-- in
select * from proveedor
where lower(ciudad) in ('bucaramanga', 'cali');
--Obtenga la lista de las áreas de venta que estén dedicadas al aseo.
select * from areaventa
where nombre like '%aseo%';
--Muestre la edad que cumplen los empleados en el año 2014.
select nombre, (2014 - extract(year from fechanac)) as "Edad en el 2014" from mercaderista
order by 2, 1;
--Liste los artículos que su precio no está entre 2000 y 3000.
--0 1000 1999 2000 3000 3001 4000 5000
-- Operadores >= <=
select *
from articulo
where precio <2000 or precio > 3000
order by precio;
-- between
select *
from articulo
where precio not between 2000 and 3000
order by precio;
--- Muestre los vendedores que nacieron en el último trimestre del 1967.
-- Extract
select * from vendedor
where extract (year from fechanac) = 1967 and
extract (month from fechanac) between 10 and 12;
--- between
select * from vendedor
where fechanac between '1967-10-01' and '1967-12-31';
-- Muestre la información de pedidos ya sean de alimentos y que el valor del domicilio sea entre 0 y 3000 o
--muestre los pedidos de tecnología y hayan sido realizados en el primer trimestre de 2012.
select * from pedido
where (tipo='alimentos' and valordomicilio between 0 and 3000) or
(tipo = 'tecnologia' and fechaentrega between '2012-01-01' and '2012-03-31');
--. Liste los cajeros nacidos entre 01/01/1985 y el 31/12/1990.
select * from cajero
where fechanac between '01/01/1985' and '31/12/1990';
-- Borre los artículos que tienen en su nombre la palabra polvo y el precio es 2000.
select * from articulo
where nombre like '%polvo%' and precio = 2000;
/*
delete from articulo
where nombre like '%polvo%' and precio = 2000;
*/
-- Joins
-- Muestre el nombre de los vendedores que trabajan en la ciudad de Bogotá.
select s.codigo, v.codsuc, v.nombre
from sucursal s, vendedor v
where s.codigo = v.codsuc and s.ciudad='bogota';
-- La administración desea conocer el nombre y la sucursal donde trabaja el vendedor que realizo
-- una venta de una agenda personal en la ciudad de Barranquilla.
select * from sucursal where ciudad = 'barranquilla';
select * from vendedor where codigo = 23;
select * from venta where codvendedor in (28, 29, 22, 23, 25, 26) and codarticulo = 23;
select * from articulo where nombre = 'agenda personal' ;
select v.nombre, s.ubicacion
from sucursal s, vendedor v, venta ve, articulo a
where s.codigo=v.codsuc and
v.codigo=ve.codvendedor and
a.codigo=ve.codarticulo and
a.nombre = 'agenda personal' and
s.ciudad = 'barranquilla';
--- Mostrar el código y nombre del mercaderista, y cuantos de artículos que promueven dentro de la empresa.
select mercaderista.codigo, mercaderista.nombre, count(articulo.codigo) as "Cantidad de Productos Asigmados"
from mercaderista, articulo
where mercaderista.codigo= articulo.codmerc
group by mercaderista.codigo, mercaderista.nombre
order by 1;
-- Mostrar la cantidad y el nombre de los artículos que tienen un precio mayor a 30.000
--y que su proveedor es de la ciudad de Bucaramanga.
select articulo.nombre, count(articulo.codigo)
from articulo, surte, proveedor
where articulo.codigo=surte.codarticulo and
proveedor.codigo=surte.codprov and articulo.precio>30000 and proveedor.ciudad='bucaramanga'
group by articulo.nombre;
--14. Muestre el nombre del cajero y la sumatorias total de los artículos facturados por los cajeros mostrando solo las mayores o iguales a 300000.
select cajero.codigo, cajero.nombre, sum(articulo.precio)
from cajero, atiende, caja, pago, cliente, compra, articulo
where articulo.codigo=compra.codarticulo and
cliente.codigo = compra.codcli and
cliente.codigo=pago.codcliente and
caja.codigo=pago.codcaja and
caja.codigo=atiende.codcaja and
cajero.codigo=atiende.codcajero
group by cajero.codigo, cajero.nombre
having sum(articulo.precio) > 300000
order by nombre;
--15. Muestre la siguiente información: código y nombre del cliente, cuantos y la sumatoria de los créditos obtenidos.
select cliente.codigo, cliente.nombre, count(credito.codigo) as "Cuantos", sum(credito.valor) as "Sumatoria"
from cliente, credito
where cliente.codigo=credito.codcli
group by cliente.codigo, cliente.nombre
having count(credito.codigo) = 1 or sum(credito.valor) >= 18000;
--16. Muestre el código y el nombre del proveedor y cuantos artículos surte.
select proveedor.codigo, proveedor.nombre, count(distinct articulo.codigo)
from proveedor, surte, articulo
where proveedor.codigo=surte.codprov and
articulo.codigo=surte.codarticulo
group by proveedor.codigo, proveedor.nombre;
--17. Muestre el código y nombre de los departamentos a los que pertenecen más de cuatro artículos.
select departamento.codigo, departamento.nombre, count(articulo.codigo)
from departamento, articulo
where departamento.codigo=articulo.coddpto
group by departamento.codigo, departamento.nombre
having count(articulo.codigo) >4;
--18. Muestre el nombre del cajero y la cantidad total de los artículos vendidos por estos.
select cajero.codigo, cajero.nombre, count(articulo.precio)
from cajero, atiende, caja, pago, cliente, compra, articulo
where articulo.codigo=compra.codarticulo and
cliente.codigo = compra.codcli and
cliente.codigo=pago.codcliente and
caja.codigo=pago.codcaja and
caja.codigo=atiende.codcaja and
cajero.codigo=atiende.codcajero
group by cajero.codigo, cajero.nombre;
--19. Muestre el precio del articulo más alto.
select max(articulo.precio) from articulo;
--20. Muestre el articulo con el valor más alto, según cada departamento.
select departamento.nombre,articulo.nombre,precio
from articulo,departamento
where departamento.codigo=articulo.coddpto
and precio=(select max(articulo.precio)
from articulo
where departamento.codigo=articulo.coddpto)
order by departamento.nombre;
--21. Muestre la información del articulo con el valor más alto. Utilizando subconsultas.
select articulo.codigo,articulo.nombre,articulo.precio
from articulo
where precio=(select max(articulo.precio) from articulo);
--22. Escriba los joins necesarios para relacionar todas las tablas del modelo.
/*sucursal.codigo=vendedor.codsuc
vendedor.codigo=venta.codvendedor
articulo.codigo=venta.codarticulo
articulo.codigo=surte.codarticulo
proveedor.codigo=surte.codprov
articulo.codigo=compra.codarticulo
cliente.codigo=compra.codcli
cliente.codigo=premio.codcli
tarjetapremios.codigo=premio.codtarj
cliente.codigo=credito.codcli
cliente.codigo=pedido.codcli
cliente.codigo=pago.codcliente
caja.codigo=pago.codcaja
caja.codigo=atiende.codcaja
cajero.codigo=atiende.codcajero
departamento.codigo=articulo.coddpto
areaventa.codigo=departamento.codarea
mercaderista.codigo=articulo.codmerc*/
Taller 1
--1. Realice los joins implícitos para unir todo el modelo.
curso.codcur=alumno.codcur
curso.codcur=asignaturas.codcur
profesor.idpro=examen.idpro
profesor.idpro=asignatura.idpro
asignatura.codasig=examen.codasig
examen.codexa=pregunta.codexa
examen.codexa=realizan.codexa
alumno.idalu=realizan.idalu
--2. Muestre los nombres de las asignaturas impartidas por el profesor Enrique Ortiz.
select nomasig
from asignatura,profesor
where profesor.idpro=asignatura.idpro and
profesor.nompro='Enrique' and
profesor.apepro='Ortiz';
--3. Muestre el nombre, apellido y nota de los estudiantes que realizaron un examen diseñado por Enrique Ortiz.
select nomalu,apealu,nota
from alumno,realizan,examen,profesor
where alumno.idalu=realizan.idalu and
profesor.idpro=examen.idpro and
examen.codexa=realizan.codexa and
profesor.nompro='Enrique' and profesor.apepro='Ortiz';
--4. Muestre la cantidad de preguntas que componen el examen con el codigo 1020.
select count(codpre)
from examen,pregunta
where examen.codexa=pregunta.codexa and
examen.codexa=1020;
--5. Muestre a los estudiantes que han realizado algún examen y que pertenecen al curso E001.
select *
from alumnos,realizan,curso
where curso.codcur=alumno.codcur and
alumno.idalu=realizan.idalu and
curso.codcur='E001';
--6. Muestre cuantos exámenes hay para la asignatura Base de Datos.
select count(codexa)
from examenes,asignatura
where asignatura.codasig=examen.codasig and
asignatura.nomasig='Base de Datos';
--7. Muestre el promedio de la nota obtenida en el examen con el codigo 1020.
select avg(nota)
from examen,realizan
where examen.codexa=realizan.codexa and
examen.codexa=1020;
--8. Muestre la nota máxima conseguida por un alumno en un examen diseñado por Enrique Ortiz.
select max(nota)
from realizan,examen,profesor
where examen.codexa=realizan.codexa and
profesor.idpro=examen.idpro and
profesor.nompro='Enrique' and
profesor.apepro='Ortiz';
--9. Muestre la nota mínima conseguida por un alumno en un examen diseñado por Enrique Ortiz.
select min(nota)
from realizan,examen,profesor
where examen.codexa=realizan.codexa and
profesor.idpro=examen.idpro and
profesor.nompro='Enrique' and
profesor.apepro='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.
select nomasig,codexa,enuncpre,rtapre
from asignatura,examen,pregunta,curso
where curso.codcur=asignatura.codcur and
asignatura.codasig=examen.codasig
examen.codexa=pregunta.codexa and
curso.codcur='E001';
lunes, 24 de noviembre de 2014
domingo, 23 de noviembre de 2014
Plazo de Entrega
Se extiende el plazo de entrega de la siguiente forma:
Grupo C193 y E021: Domingo 23 a la media noche
Grupo E192: Lunes 24 a medio día.
Grupo E191: Miércoles 26 a media noche
martes, 18 de noviembre de 2014
Entrega de Actividades del Tercer Corte
Buenas Noches Jóvenes
Este post es para comunicarles y reiterarles que la fecha de entrega es el sábado, 22 de noviembre a las 12:00 de la noche.
lunes, 10 de noviembre de 2014
sábado, 8 de noviembre de 2014
Consultas
https://app.box.com/s/iam1tskhsdrb4iw0ljc2
1. Muestre la información de los proveedores ubicados en la ciudad de Bucaramanga o Cali.
2. Obtenga la lista de las áreas de venta que estén dedicadas al aseo.
3. Muestre la edad que cumplen los empleados en el año 2014.
4. Liste los artículos que su precio no está entre 2000 y 3000.
5. Aplique una reducción del 3% a los artículos menores de 5000.
6. Muestre los vendedores que nacieron en el último trimestre del 1967.
7. Muestre la información de pedidos ya sean de alimentos y que el valor del domicilio sea entre 0 y 3000 o muestre los pedidos de tecnología y hayan sido realizados en el primer trimestre de 2012.
8. Liste los cajeros nacidos entre 01/01/1985 y el 31/12/1990.
9. Borre los artículos que tienen en su nombre la palabra polvo y el precio es 2000.
Joins
Joins
10. Muestre el nombre de los vendedores que trabajan en la ciudad de Bogotá.
11. La administración desea conocer el nombre y la sucursal donde trabaja el vendedor que realizo una venta de una agenda personal en la ciudad de Barranquilla.
11. La administración desea conocer el nombre y la sucursal donde trabaja el vendedor que realizo una venta de una agenda personal en la ciudad de Barranquilla.
12. Mostrar el código y nombre del mercaderista, y cuantos de artículos que promueven dentro de la empresa.
13. Mostrar la cantidad y el nombre de los artículos que tienen un precio mayor a 30.000 y que su proveedor es de la ciudad de Bucaramanga.
14. Muestre el nombre del cajero y la sumatorias total de los artículos facturados por los cajeros mostrando solo las mayores o iguales a 300000.
15. Muestre la siguiente información: código y nombre del cliente, cuantos y la sumatoria de los créditos obtenidos.
16. Muestre el código y el nombre del proveedor y cuantos artículos surte.
17. Muestre el código y nombre de los departamentos a los que pertenecen más de cuatro artículos.
18. Muestre el nombre del cajero y la cantidad total de los artículos vendidos por estos.
19. Muestre el precio del articulo más alto.
20. Muestre el articulo con el valor más alto, según cada departamento.
21. Muestre el articulo con el valor más alto, según cada área de venta .
22. Muestre la información del articulo con el valor más alto. Utilizando subconsultas.
23. Escriba los joins necesarios para relacionar todas las tablas del modelo.
20. Muestre el articulo con el valor más alto, según cada departamento.
21. Muestre el articulo con el valor más alto, según cada área de venta .
22. Muestre la información del articulo con el valor más alto. Utilizando subconsultas.
23. Escriba los joins necesarios para relacionar todas las tablas del modelo.
jueves, 6 de noviembre de 2014
Tema 2 - Parciales
-- 1. Ingrese el siguiente registro :
-- Identificación: 1098635611
-- Nombre: María Ximena
-- Apellido1: Hernández
-- Apellido2: Martínez
-- Teléfono: 6341523
-- Email: rpp@yahoo.es
-- Dirección: carrera 8 # 26 – 17 Portones del Lago
-- Ciudad: Bucaramanga
-- Departamento: Santander
-- Código postal: 91802
insert into datospersona
values ('1098635611','María Ximena','Hernández','Martínez','6341523','rpp@yahoo.es','carrera 8 # 26 – 17 Portones del Lago','Bucaramanga','Santander','91802');
-- Primer Error:
-- ERROR: el valor es demasiado largo para el tipo character varying(9) -----> Hay un campo que excede el valor asignado de caracteres, el mensaje nos indica que tiene 9 maximo y corresponde a la identificación
-- > Se arregla disminuyendo los caracteres que se estan ingresando: se quita un digito de la identificación
insert into datospersona
values ('109863561','María Ximena','Hernández','Martínez','6341523','rpp@yahoo.es','carrera 8 # 26 – 17 Portones del Lago','Bucaramanga','Santander','91802');
-- Segundo Error
-- ERROR: llave duplicada viola restricción de unicidad «uqemil» -----> Se esta tratando de duplicar un dato en una columna que esta restringida a valores unicos.
-- Se arregla modificando el email para que sea unico dentro de la columna.
insert into datospersona
values ('109863561','María Ximena','Hernández','Martínez','6341523','mxhm@yahoo.es','carrera 8 # 26 – 17 Portones del Lago','Bucaramanga','Santander','91802');
-- 2. Ingrese según el texto, los registros necesarios en las tablas de la base de datos eventos para completar la siguiente operación:
-- a. Identifique a cuantas tablas debe ingresarle información.
-- Rta: 2 tablas, conciertos y comprasconciertos
-- Rebeca Gómez compra 10 tiquetes el día 30 de octubre de 2014 a las 18:30. Para un nuevo concierto del
-- género R&B que se realizara el 15 de diciembre de 2014 a las 21:00 horas y lo da la artista Beyonce en el
-- Santiago Bernabeu, el precio del tiquete es de 6000 y se dice que ya vendieron 25531 de 50000, del
-- concierto no se tiene más información.
-- b. Realiza los insert into correspondientes.
insert into conciertos
values ('857','Beyonce','R&B','2014-12-15','21:00:00','6000','50000','25531',null,'567');
insert into comprasconciertos
values ('Rebeca','857','2014-10-30','10');
-- 3. Actualiza la columna vendidas de la tabla conciertos, en base a las compras registradas en la tabla compraconciertos.
select *
from comprasconciertos
order by codconcierto;
-- Boletas vendidas del concierto 287 (10+8)=18
update conciertos set vendidas = 18 where codigo = '287';
-- Boletas vendidas del concierto 345 (14+5+36)= 55
update conciertos set vendidas = 55 where codigo = '345';
-- Boletas vendidas del concierto 345 (14+5+36)= 55
update conciertos set vendidas = 10 where codigo = '857';
-- 4. Obtenga la información de las corridas de toros donde se presenten tanto ‘El Litri’ o ‘El Fundi’ .
select *
from corridasdetoros
where torero1 in ('El Litri','El Fundi') or
torero2 in ('El Litri','El Fundi') or
torero3 in ('El Litri','El Fundi');
-- 5. Muestre los clientes cuya fecha de caducidad de la cuenta se cumple en el año 2015.
select * from clientes
where extract (year from feccaducidad) = 2015;
-- 6. Muestre los conciertos que se realizaron en el primer trimestre del 2004.
select * from conciertos
where fecha between '2004-01-01' and '2004-03-31';
select * from conciertos
where fecha >= '2004-01-01' and fecha <= '2004-03-31';
select * from conciertos
where extract(month from fecha) between 1 and 3 and
extract(year from fecha)=2004;
-- 7. Halle cuantas veces (distintas) se ha realizado corridas de toro con el torero ‘El Juli’
select distinct count(codigo)
from corridasdetoros
where torero1='El Juli' or
torero2='El Juli' or
torero3='El Juli';
-- 8. Aumenta el precio de los tiquetes de los partidos en un 3%.
update partidos set precio = precio * 1.03;
-- 9. Halle los conciertos que su precio sea menores o iguales a 3000 o mayores e iguales a 5000.
select * from conciertos where precio <=3000 or precio >=5000;
-- 10. Liste los nombres y las capacidades de los escenarios que cumplen las siguientes condiciones:
-- a. No tiene foto del escenario.
select nombre,capacidad from escenario where foto is null;
-- b. Entre su nombre no tienen los siguientes caracteres y espacio: ‘ago Be’
select nombre,capacidad from escenario
where nombre not like '%ago Be%';
-- c. El código del escenario es el 123 o 466 o 890 o 563.
select nombre,capacidad
from escenario
where codigo in ('123', '466', '890', '563');
Tema 1 - Parciales
--Tema 1
-- 1. Ingresa según el texto, los registros necesarios en las tablas de la base de datos eventos para completar la siguiente operación:
-- a. Identifica a cuantas tablas debe ingresarle información.
-- Rta: 2 tablas, conciertos y comprasconciertos
-- b. Realiza los insert into correspondientes.
-- Rebeca Gómez compra 10 tiquetes el día 30 de octubre de 2014 a las 18:30. Para un nuevo concierto del
-- género R&B que se realizara el 15 de diciembre de 2014 a las 21:00 horas y lo da la artista Beyonce en el
-- Santiago Bernabeu, el precio del tiquete es de 6000 y se dice que ya vendieron 25531 de 50000, del
-- concierto no se tiene más información.
insert into conciertos
values ('857','Beyonce','R&B','2014-12-15','21:00:00','6000','50000','25531',null,'567');
insert into comprasconciertos
values ('Rebeca','857','2014-10-30','10');
-- 2. Actualiza la columna vendidas de la tabla conciertos, en base a las compras registradas en la tabla compraconciertos.
select *
from comprasconciertos
order by codconcierto;
-- Boletas vendidas del concierto 287 (10+8)=18
update conciertos set vendidas = 18 where codigo = '287';
-- Boletas vendidas del concierto 345 (14+5+36)= 55
update conciertos set vendidas = 55 where codigo = '345';
-- Boletas vendidas del concierto 345 (14+5+36)= 55
update conciertos set vendidas = 10 where codigo = '857';
-- 3. Obtenga la información de las corridas de toros donde se presenten tanto ‘El Litri’ o ‘El Fundi’ .
select *
from corridasdetoros
where torero1 in ('El Litri','El Fundi') or
torero2 in ('El Litri','El Fundi') or
torero3 in ('El Litri','El Fundi');
-- 4. Muestra los clientes cuya fecha de caducidad de la cuenta se cumple en el año 2015.
select * from clientes
where extract (year from feccaducidad) = 2015;
-- 5. Muestra los conciertos que se realizaron en el segundo trimestre del 2004.
select * from conciertos
where fecha between '2004-04-01' and '2004-06-30';
select * from conciertos
where fecha >= '2004-04-01' and fecha <= '2004-06-30';
select * from conciertos
where extract(month from fecha) between 4 and 6 and
extract(year from fecha)=2004;
-- 6. Halla cuantas veces (distintas) se ha realizado corridas de toro con el torero ‘El Fundi’
select distinct count(codigo)
from corridasdetoros
where torero1='El Fundi' or
torero2='El Fundi' or
torero3='El Fundi';
-- 7. Aumenta el precio de los tiquetes de las corridas en un 3%.
update corridasdetoros set precio = precio * 1.03;
-- 8. Halla los conciertos que su precio sea superiores a 3000 o menores e iguales a 6000.
select * from conciertos where precio >3000 or precio <=6000;
-- 9. Lista los nombres y las capacidades de los escenarios que cumplen las siguientes condiciones:
-- a. No tiene foto del escenario.
select nombre,capacidad from escenario where foto is null;
-- b. Entre su nombre no tienen los siguientes caracteres y espacio: ‘ago Be’
select nombre,capacidad from escenario
where nombre not like '%ago Be%';
-- c. El código del escenario es el 123 o 466 o 890 o 563.
select nombre,capacidad
from escenario
where codigo in ('123', '466', '890', '563');
-- 10. Ingresa el siguiente registro :
-- Identificación: 1098635611
-- Nombre: Luz Ximena
-- Apellido1: Torres
-- Apellido2: Osorio
-- Teléfono:
-- Email: rpp@yahoo.es
-- Dirección: carrera 8 # 26 – 17 Portones del Lago
-- Ciudad: Bucaramanga
-- Departamento: Santander
-- Código postal: 91802
insert into datospersona
values ('1098635611','Luz Ximena','Torres','Osorio',null,'rpp@yahoo.es','carrera 8 # 26 – 17 Portones del Lago','Bucaramanga','Santander','91802');
-- a. Escriba y explique por qué se genera el error.
-- Primer Error:
-- ERROR: el valor es demasiado largo para el tipo character varying(9) -----> Hay un campo que excede el valor asignado de caracteres, el mensaje nos indica que tiene 9 maximo y corresponde a la identificación
-- > Se arregla disminuyendo los caracteres que se estan ingresando: se quita un digito de la identificación
insert into datospersona
values ('109863561','Luz Ximena', 'Torres', 'Osorio',null, 'rpp@yahoo.es', 'carrera 8 # 26 – 17 Portones del Lago', 'Bucaramanga', 'Santander', '91802');
-- Segundo Error
-- ERROR: el valor null para la columna «telefono» viola la restricción not null -----> Hay un valor que estamos tratando pasar como nulo y no permite porque hay una restricción que hace obligatorio el ingreso.
-- Se arregla agregando un número de telefono.
insert into datospersona
values ('109863561','Luz Ximena', 'Torres', 'Osorio', '6342516', 'rpp@yahoo.es', 'carrera 8 # 26 – 17 Portones del Lago','Bucaramanga','Santander','91802');
-- Tercer Error
-- ERROR: llave duplicada viola restricción de unicidad «uqemil» -----> Se esta tratando de duplicar un dato en una columna que esta restringida a valores unicos.
-- Se arregla modificando el email para que sea unico dentro de la columna.
insert into datospersona
values ('109863561','Luz Ximena', 'Torres', 'Osorio', '6342516', 'lxto@yahoo.es', 'carrera 8 # 26 – 17 Portones del Lago','Bucaramanga','Santander','91802');
Parciales - Grupos E192 & E191
Buenas Días Jóvenes
Se comunica la programación de la recuperación del parcial para hoy.
En la sesión de hoy se llevará a cabo un taller de recuperación para responder en una hora.
También, se recibirán las correcciones que estaban pendientes y se publicaran las soluciones al tema 1 y 2 de los parciales.
Agenda: Jueves
- Entrega de Notas.
- Recuperación parcial.
- Entrega de correcciones pendientes
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.
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.
AVISO IMPORTANTE
Se cierra a continuación la recepción de trabajos de Diseño de Base de Datos y Base de Datos Relacionales.
Atte:
Profesora
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;