Olá! Segue minha resolução dos desafios propostos. Fiquei contente que pude fazer todos os exercícios sem auxílio.
-- Traga todos os dados da cliente Maria Silva.
SELECT * from clientes
where nome LIKE 'Maria Silva'
-- Busque o ID do pedido e o ID do cliente dos pedidos onde
-- o status esteja como entregue.
select * from pedidos
SELECT ip.idpedido, p.idcliente
from pedidos as p
join itenspedidos as ip on p.id = ip.idpedido
where p.status = 'Entregue';
-- 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;
-- Busque o nome e cargo dos colaboradores que foram
-- contratados entre 2022-01-01 e 2022-06-31.
SELECT nome, cargo, datacontratacao
from colaboradores
where datacontratacao BETWEEN strftime('2022-01-01') and strftime('2022-06-31');
-- Recupere o nome do cliente que fez o primeiro pedido.
select * from pedidos
SELECT c.nome, p.id
from clientes c
join pedidos p ON c.id = p.idcliente
where datahorapedido LIMIT 1;
-- Liste os produtos que nunca foram pedidos.
select * from itenspedidos
select p.nome, ip.quantidade
from produtos p
join itenspedidos ip on p.id = ip.idproduto
where quantidade isnull;
-- Liste os nomes dos clientes que fizeram
-- pedidos entre 2023-01-01 e 2023-12-31.
select c.nome, p.datahorapedido
from clientes c
join pedidos p on c.id = p.idcliente
where datahorapedido BETWEEN strftime('2023-01-01') and strftime('2023-12-31');
-- Recupere os nomes dos produtos que estão em menos de 15 pedidos.
select p.nome, ip.quantidade
from produtos p
join itenspedidos ip on p.id = ip.idproduto
where quantidade < 15;
-- Liste os produtos e o ID do pedido que foram realizados
-- pelo cliente "Pedro Alves" ou pela cliente "Ana Rodrigues".
SELECT pr.nome, ip.idpedido
from produtos pr
join itenspedidos ip on pr.id = ip.idproduto
JOIN pedidos p on p.id = ip.idpedido
join clientes c on p.idcliente = c.id
where c.nome = 'Pedro Alves' or c.nome = 'Ana Rodrigues';
-- Recupere o nome e o ID do cliente que mais comprou(valor) no Serenatto.
select pe.idcliente, c.nome, SUM(ip.precounitario * ip.quantidade) as valor
from clientes c
join pedidos pe on c.id = pe.idcliente
join itenspedidos ip on pe.id = ip.idpedido
group by pe.idcliente
order by valor desc
limit 1;