--1 Traga todos os dados da cliente Maria Silva.
SELECT*FROM Clientes WHERE nome LIKE 'Maria Silva';
--2 Busque o ID do pedido e o ID do cliente dos pedidos onde o status esteja como entregue.
SELECT id, idcliente, status FROM Pedidos WHERE status LIKE 'entregue';
--3 Retorne todos os produtos onde o preço seja maior que 10 e menor que 15.
SELECT nome, preco from Produtos WHERE preco BETWEEN 10 and 15;
--4 Busque o nome e cargo dos colaboradores que foram contratados entre 2022-01-01 e 2022-06-30.
SELECT nome, cargo from colaboradores WHERE datacontratacao BETWEEN '2022-01-01' and '2022-06-30';
--5 Recupere o nome do cliente que fez o primeiro pedido.
SELECT c.nome
FROM Clientes as c
JOIN Pedidos as p on c.id = p.IDCliente
WHERE p.id = 1;
--6 Liste os produtos que nunca foram pedidos.
SELECT pr.nome
FROM Produtos AS pr
LEFT JOIN Itenspedidos AS ip ON pr.id = ip.IDProduto
WHERE ip.IDProduto IS NULL;
--7 Liste os nomes dos clientes que fizeram pedidos entre 2023-01-01 e 2023-12-31.
SELECT DISTINCT(c.nome)
FROM Clientes as c
JOIN Pedidos as p on c.id = p.IDCliente
WHERE p.DataHoraPedido BETWEEN '2023-01-01' and '2023-12-31'
ORDER by c.Nome ASC;
--8 Recupere os nomes dos produtos que estão em menos de 15 pedidos.
SELECT p.nome, ip.idproduto, COUNT(ip.idpedido) Total_pedidos
from Produtos as p
LEFT JOIN Itenspedidos as ip on ip.IDProduto=p.id
GROUP by p.id, p.Nome
HAVING COUNT(ip.IDPedido) < 15;
--9 Liste os produtos e o ID do pedido que foram realizados pelo cliente "Pedro Alves" ou pela cliente "Ana Rodrigues".
SELECT x.nome_cliente, y.nome_produto, y.idpedido
from (SELECT p.id, c.nome as nome_cliente
from Pedidos p
JOIN Clientes c on c.id=p.IDCliente
WHERE c.Nome like 'Pedro Alves' or c.Nome like 'Ana Rodrigues'
) as x
JOIN (SELECT p.id, p.nome as nome_produto, ip.IDPedido
FROM Produtos p
JOIN Itenspedidos ip on ip.IDProduto=p.id
) as y on y.idpedido=x.id
ORDER by x.nome_cliente ASC;
--10 Recupere o nome e o ID do cliente que mais comprou(valor) no Serenatto.
SELECT * from Itenspedidos;
--id, idcliente
SELECT p.idcliente, sum(ip.precounitario) as Total_compras
from Pedidos p
JOIN Itenspedidos ip on ip.IDPedido = p.ID
GROUP by idcliente
--codigo final
SELECT c.nome, MAX(pc.Total_compras) as Valor_compra
from (SELECT p.idcliente, sum(ip.precounitario) as Total_compras
from Pedidos p
JOIN Itenspedidos ip on ip.IDPedido = p.ID
GROUP by idcliente) as pc
JOIN Clientes as c on c.id = pc.idcliente
ORDER BY pc.Total_compras DESC
LIMIT 1;