Practica 09b Consultas SQL
Practica 09b Consultas SQL
Practica 09b Consultas SQL
FACULTAD DE INGENIERIA
Escuela Profesional de Ingeniería de Sistemas
PRÁCTICA 09
“EJERCICIOS: REALIZACIÓN DE CONSULTAS SQL”
Integrantes:
Romero Roque, Angelica Beatriz (2019063327)
Sagua Ramos, Alonso Gustavo (2018062254)
Salluca Valero, Jhon Francisco (2019063633)
Tacna – Perú
2021
Mg. Oliver Santana Carbajal
PRÁCTICA 09b
Ejercicios. Realización de consultas SQL
CASO 3: Gestión de ventas
Modelo entidad/relación.
2. Devuelve un listado con todos los comerciales junto con los datos de los pedidos que han realizado.
Este listado también debe incluir los comerciales que no han realizado ningún pedido. El listado debe
estar ordenado alfabéticamente por el primer apellido, segundo apellido y nombre de los comerciales.
select a.id,a.apellido1,a.apellido2,a.nombre,b.*
from ventas.pedido b
on b.id_comercial = a.id
3. Devuelve un listado que solamente muestre los clientes que no han realizado ningún pedido.
select a.id,a.apellido1,a.apellido2,a.nombre,b.*
from ventas.pedido b
right join ventas.cliente a
on b.id_cliente = a.id
where b.id_cliente is null;
4. Devuelve un listado que solamente muestre los comerciales que no han realizado ningún pedido.
select a.id,a.apellido1,a.apellido2,a.nombre,b.*
from ventas.comercial a
on a.id = b.id_comercial
5. Devuelve un listado con los clientes que no han realizado ningún pedido y de los comerciales que no
han participado en ningún pedido. Ordene el listado alfabéticamente por los apellidos y el nombre. En
en listado deberá diferenciar de algún modo los clientes y los comerciales.
SELECT * FROM comercial LEFT JOIN pedido ON comercial.id = pedido.id_comercial WHERE pedido.id_cliente IS
NULL;
SELECT * FROM pedido RIGTH JOIN comercial ON comercial.id = pedido.id_comercial WHERE pedido.id_comercial
IS NULL
UNION
SELECT comercial.apellido1, comercial.apellido2, comercial.nombre FROM comercial LEFT JOIN pedido
ON comercial.id = perdido.id_comercial WHERE pedido.id_comercial IS NULL;
6. ¿Se podrían realizar las consultas anteriores con NATURAL LEFT JOIN o NATURAL RIGHT JOIN? Justifique su
respuesta.
Si se pueden realizar este tipo consultas siempre y cuando el nombre y las listas seleccionada tenga nombre
que no incidan o sean diferentes. Ya que si tienen nombre igual el programa no puede definir a cual nos
referimos.
Consultas resumen
Mg. Oliver Santana Carbajal
1. Calcula la cantidad total que suman todos los pedidos que aparecen en la tabla pedido.
from pedido;
clientes que no han realizado ningún pedido indicando que la máxima cantidad de sus pedidos
realizados es 0. Puede hacer uso de la función IFNULL.
14. Devuelve cuál ha sido el pedido de máximo valor que se ha realizado cada año.
15. Devuelve el número total de pedidos que se han realizado cada año.
Subconsultas
Con operadores básicos de comparación
1. Devuelve un listado con todos los pedidos que ha realizado Adela Salas Díaz. (Sin utilizar INNER JOIN).
Select * from pedido where id_cliente = (select id from cliente where nombre = 'Adela' and apellido1 =
'Salas' and apellido2 = 'Diaz');
2. Devuelve el número de pedidos en los que ha participado el comercial Daniel Sáez Vega. (Sin
utilizar INNER JOIN)
Select count(*) from pedido where id_comercial = (Select id from comercial where nombre = 'Daniel'
and apellido1 = 'Sáez' and apellido2 = 'Vega');
3. Devuelve los datos del cliente que realizó el pedido más caro en el año 2019. (Sin utilizar INNER JOIN)
Select * from cliente where id = (select id_cliente from pedido where total = (select MAX(total) from
pedido where year(fecha) = 2019));
4. Devuelve la fecha y la cantidad del pedido de menor valor realizado por el cliente Pepe Ruiz Santana.
Select fecha, total from cliente inner join pedido on cliente.id = pedido.id_cliente where cliente.nombre
= 'Pepe' and apellido1 = 'Ruiz' and apellido2 = 'Santana' and pedido.total = (select MIN(total) from
cliente inner join pedido on cliente.id = pedido.id_cliente where cliente.nombre = 'Pepe' and apellido1
= 'Ruiz' and apellido2 = 'Santana');
5. Devuelve un listado con los datos de los clientes y los pedidos, de todos los clientes que han realizado
un pedido durante el año 2017 con un valor mayor o igual al valor medio de los pedidos realizados
durante ese mismo año.
Select * from cliente inner join pedido on cliente.id = pedido.id_cliente where year(pedido.fecha) =
2017 and pedido.total >= (select avg(total) from pedido where year(fecha)=2017);
Mg. Oliver Santana Carbajal
7. Devuelve un listado de los clientes que no han realizado ningún pedido. (Utilizando ANY o ALL).
Select * from cliente where id!= all(select id_cliente from pedido);
8. Devuelve un listado de los comerciales que no han realizado ningún pedido. (Utilizando ANY o ALL).
Select * from comercial where id!= all(select id_comercial from pedido);
10. Devuelve un listado de los comerciales que no han realizado ningún pedido. (Utilizando IN o NOT IN).
Select * from comercial where id not in (select id_comercial from pedido);
12. Devuelve un listado de los comerciales que no han realizado ningún pedido. (Utilizando EXISTS o NOT
EXISTS).
Select * from comercial where not exists (select id_comercial from pedido where comercial.id =
pedido.id_comercial);