create database ventas character set utf8mb4;
use ventas;
create table cliente(
id int unsigned auto_increment primary key,
nombre varchar(100) not null,
apellido1 varchar(100) not null,
apellido2 varchar(100),
ciudad varchar(100),
categoria int unsigned);
create table comercial(
id int unsigned auto_increment primary key,
nombre varchar(100) not null,
apellido1 varchar (100) not null,
apellido2 varchar(100),
comision float);
create table pedido(
id int unsigned auto_increment primary key,
total double not null,
fecha date,
id_cliente int unsigned not null,
id_comercial int unsigned not null,
foreign key (id_cliente) references cliente(id),
foreign key (id_comercial) references comercial(id));
insert into cliente values (1,'Aaron', 'Rivero', 'Gomez', 'Almeria', 100);
insert into cliente values (2,'Adela', 'Salas', 'Diaz', 'Granada', 200);
insert into cliente values (3,'Adolfo', 'Rubio', 'Flores', 'Sevilla', null);
insert into cliente values (4,'Adrian', 'Suarez', null, 'Jaen', 300);
insert into cliente values (5,'Marcos', 'Loyola', 'Mendez', 'Almeria', 200);
insert into cliente values (6,'Maria', 'Santana', 'Moreno', 'Cadiz', 100);
insert into cliente values (7,'Pilar', 'Ruiz', null, 'Sevilla', 300);
insert into cliente values (8,'Pepe', 'Ruiz', 'Santana', 'Huelva', 200);
insert into cliente values (9,'Guillermo', 'Lopez', 'Gomez', 'Granada', 225);
insert into cliente values (10,'Daniel', 'Santana', 'Loyola', 'Sevilla', 125);
insert into comercial values (1,'Daniel', 'Saez', 'Vega', 0.15);
insert into comercial values (2,'Juan', 'Gomez', 'Lopez', 0.13);
insert into comercial values (3,'Diego', 'Flores', 'Salas', 0.11);
insert into comercial values (4,'Marta', 'Herrera', 'Gil', 0.14);
insert into comercial values (5,'Antonio', 'Carretero', 'Ortega', 0.12);
insert into comercial values (6,'Manuel', 'Dominguez', 'Hernandez', 0.13);
insert into comercial values (7,'Antonio', 'Vega', 'Hernandez', 0.11);
insert into comercial values (8,'Alfredo', 'Ruiz', 'Flores', 0.05);
insert into pedido values (1, 150.5, '2017-10-05', 5, 2);
insert into pedido values (2, 270.65, '2016-09-10', 1, 5);
insert into pedido values (3, 65.26, '2017-10-05', 2, 1);
insert into pedido values (4, 110.5, '2016-08-17', 8, 3);
insert into pedido values (5, 948.5, '2017-09-10', 5, 2);
insert into pedido values (6, 2400.6, '2016-07-27', 7, 1);
insert into pedido values (7, 5760, '2015-09-10', 2, 1);
insert into pedido values (8, 1983.43, '2017-10-10', 4, 6);
insert into pedido values (9, 2480.4, '2016-10-10', 8, 3);
insert into pedido values (10, 250.45, '2015-06-27', 8, 2);
insert into pedido values (11, 75.29, '2016-08-17', 3, 7);
insert into pedido values (12, 3045.6, '2017-04-25', 2, 1);
insert into pedido values (13, 545.75, '2019-01-25', 6, 1);
insert into pedido values (14, 145.82, '2017-02-02', 6, 1);
insert into pedido values (15, 370.85, '2019-03-11', 1, 5);
insert into pedido values (16, 2389.23, '2019-03-11', 1, 5);
-- CONSULTAS
-- a) Devuelve un listado con todos los pedidos que se han realizado. Los pedidos deben estar
ordenados por la fecha de realización.
select * from pedido order by fecha;
-- b) Devuelve todos los datos de los dos pedidos de mayor valor.
select * from pedido order by total desc limit 2;
-- c) Devuelve un listado con los identificadores de los clientes que han realizado algún pedido.
Tenga en cuenta que no debe mostrar identificadores que estén repetidos.
select distinct id_cliente from pedido;
-- d) Devuelve un listado de todos los pedidos que se realizaron durante el año 2017, cuya
cantidad total sea superior a 500€.
select fecha, total from pedido where fecha between "2017-01-01" and "2017-12-31" and total >
500;
-- e) Devuelve un listado con el nombre y los apellidos de los comerciales que tienen una comisión
entre 0.05 y 0.11.
select nombre, apellido1, apellido2 from comercial where comision between 0.05 and 0.11;
-- f) Devuelve el valor de la comisión de mayor valor que existe en la tabla comercial.
select * from comercial order by comision desc limit 1;
-- g) Devuelve el identificador, nombre y primer apellido de aquellos clientes cuyo segundo
apellido no es NULL. El listado deberá estar ordenado alfabéticamente por apellidos y nombre.
select id, nombre, apellido1 from cliente where apellido1 is not null order by nombre asc,
apellido1 asc;
-- h) Devuelve un listado de los nombres de los clientes que empiezan por A.
select * from cliente where nombre like "A%";
-- i) Devuelve un listado de los nombres de los clientes que terminan en A.
select * from cliente where nombre like "%a";
-- j) Devuelve un listado de los nombres de los clientes que no empiezan por A.
select * from cliente where nombre not like "A%";
-- k) Devuelve un listado con los nombres de los comerciales que terminan por e.
select * from comercial where nombre like "%e";
-- l) Mostrar los comerciales que se llamen ANTONIO.
select * from comercial where nombre like "Antonio";
-- m) Mostrar los nombres de los clientes cuya categoría esta vacía.
select* from cliente where categoria is null;
-- n) Mostrar la categoría cuya ciudad sea igual Sevilla en la tabla cliente.
select categoria, ciudad from cliente where ciudad like "sevilla";
-- o) Mostrar el nombre de los comerciales cuya comisión este entre 0.13 y 0.15
select nombre, apellido1, comision from comercial where comision between 0.13 and 0.15;