Data">
Super Mercado
Super Mercado
Super Mercado
RETO1
2. Modelo físico
use supermercado;
direccion varchar(35),
salario float(6),
tipo varchar(20),
IDseccion int(5),
jefe int(5),
primary key (IDemp)
);
3. Inserción datos
use supermercado;
insert into empleados values (00000, 'Ander Garcia Pillado', 'C/ Azkuene', 1000, 'reponedores', 10016,
00002);
insert into empleados values (00001, 'Javier Pinto Dominguez', 'C/ Zumea', 1250, 'reponedores', 10016,
00002);
insert into empleados values (00002, 'Eneko Echeburu Campa', 'Santiago', 15000, 'cajeros', 10010, NULL);
insert into empleados values (00003, 'Sergio Elicegui Bande', 'C/ Locuras', 1000, 'reponedores', 10021,
00015);
insert into empleados values (00004, 'Carlos Roma Hernandez', 'C/ Lapurbide', 1250, 'cajeros', 10016,
00002);
Integridad referencial
IMPLEMENTACION Y DISEÑO DE UNA BASE DE DATOS. RETO1
use Supermercado;
1. Mostrar el nombre de los empleados , su salario y el salario incrementado en 2%, de aquellos empleados
que trabajan en la sección de Pescadería
2. Mostar nombre y fecha de los clientes VIP que han realizado compras en online durante el mes de enero.
select nombre,fecha
from compras inner join clientes on compras.idcliente=clientes.idcliente
where VIP=1 and and month(fecha)=1;
3. Mostar el nombre de los clientes que han comprado algún producto que empiece por D. Mediante
SUBCONSULTAS
select nombre
from clientes
where idcliente IN (select idcliente
from compras
where idcompra In (select idcompra
from contiene
where idproducto In (select idproducto
from productos
where nombre like 'D%')));
4. Un compañero de trabajo ha encontrado descuentos de clientes pendientes de aplicar. Los quiere aplicar
ahora. Ejecuta las siguientes operaciones :
insert into desc_pendientes values (70111, 80001, 'Oferta Black Friday', 15);
insert into desc_pendientes values (70100, 80002, 'Promoción especial navidad', 20);
insert into desc_pendientes values (70104, 80003, 'Promoción especial electrónica', 20);
insert into desc_pendientes values (70103, 80004, 'Oferta Black Friday', 10);
insert into desc_pendientes values (70109, 80005, 'Oferta Black Friday', 10);
insert into desc_pendientes values (70110, 80006, 'Promoción especial navidad', 15);
y realiza la operación que falta para pasar los descuentos de esta tabla desc_pendientes a la tabla descuentos.
5. Al querer realizar la siguiente operación en la base de datos, se han dado cuenta que falta el atributo plus en
los cajeros. Añade este atributo de tipo integer y a continuación realiza la operación siguiente:
A los cajeros que pertenecen a las secciones 10006 y 10005 el plus será 100 y al resto de los cajeros 50.
update cajeros
set plus=100
where idemp In (select idemp
from empleados
where idseccion In(10006,10005));
update cajeros
set plus=50
where idemp In (select idemp
from empleados
where idseccion NOT IN (10006,10005));
6. Se quiere mostrar la suma total gastada en las compras realizada por el cliente cuyo nombre es Sergio pero
su apellido no se sabe.
select idcliente,sum(total)
from compras i
where idcliente IN (select idcliente
from clientes
where nombre like 'Sergio%');
7. Se está haciendo un estudio y se quiere saber cuántas veces ha sido comprado el producto Galletas Oreo.
select count(idproducto)
from contiene
where idproducto = (select idproducto
from productos
where nombre ='Galletas Oreo');
8. Mostrar una relación de los productos comprados en cada compra. Se mostrará el idcompra, idproducto,
nombre, precio, cantidad, precio total.
9. Se necesita un listado con el idcliente y nombre del cliente, de aquellos clientes que han realizado alguna
compra que no tienen descuento.
10. Ha habido un error y los teléfonos del empleado Javier Pinto Dominguez son incorrectos. Se quiere
eliminarlos para poder introducir los teléfonos correctos.
12. Se trata de conocer la media de los salarios de los trabajadores que trabaja en cada una de las secciones que
comienzan con P '.
13. Se trata de conocer la media de los salarios de los trabajadores que trabajan en cada una de las secciones
que comienzan con P 'y ganan más de 1000 €.
14. Se trata de conocer la media de los salarios de los trabajadores que trabajan en cada una de las secciones
que comienzan con P 'y ganan más de 1000 €. Sólo aparecerán secciones medias de salarios superiores a
1100.
select avg(e.salario)'Salario medio' , s.nombre 'Nombre Seccion'
From empleados e inner join secciones s on e.IDseccion = s.IDseccion
where s.nombre like 'P%'and s.ventas>1000
Group by s.idseccion
having avg(e.salario)>1100;
IMPLEMENTACION Y DISEÑO DE UNA BASE DE DATOS. RETO1