Segue abaixo a resolução dos exercícios
-- 1.Traga todos os dados da cliente Maria Silva.
SELECT * FROM clientes c WHERE nome = '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 -- Checagem
FROM
Pedidos p
WHERE
Status = 'Entregue';
-- 3.Retorne todos os produtos onde o preço seja maior que 10 e menor que 15.
SELECT * FROM produtos p WHERE preco > 10 AND preco < 15;
-- 4.Busque o nome e cargo dos colaboradores que foram contratados entre 2022-01-01 e 2022-06-31.
SELECT
Nome,
Cargo,
DataContratacao --- Checagem
FROM
colaboradores c
WHERE
DataContratacao BETWEEN '2022-01-01' AND '2022-06-30';
-- 5.Recupere o nome do cliente que fez o primeiro pedido.
SELECT
nome
FROM
clientes c
WHERE
ID = (
SELECT
id
FROM
Pedidos p
ORDER BY
DataHoraPedido ASC
LIMIT 1);
-- 6.Liste os produtos que nunca foram pedidos.
SELECT
nome
FROM
produtos p
WHERE id NOT IN (
SELECT
idpedido
FROM
itenspedidos i);
-- 7.Liste os nomes dos clientes que fizeram pedidos entre 2023-01-01 e 2023-12-31.
SELECT
c.nome,
p.DataHoraPedido -- Checagem
FROM
clientes c
INNER JOIN Pedidos p ON c.id = p.IDCliente
WHERE
p.DataHoraPedido BETWEEN '2023-01-01' AND '2023-12-31'
ORDER BY
p.DataHoraPedido;
-- 8.Recupere os nomes dos produtos que estão em menos de 15 pedidos.
SELECT
p.nome,
i.idpedido
FROM
produtos p
INNER JOIN itenspedidos i ON p.id = i.idproduto
GROUP BY
p.nome
HAVING
COUNT(i.idpedido) < 15;
-- 9.Liste os produtos e o ID do pedido que foram realizados pelo cliente "Pedro Alves" ou pela cliente "Ana Rodrigues".
SELECT
p.nome,
i.idpedido
FROM
produtos p
INNER JOIN itenspedidos i ON p.id = i.idproduto
INNER JOIN Pedidos pd ON i.idpedido = pd.ID
INNER JOIN clientes c ON pd.IDCliente = c.id
WHERE
c.nome IN ('Pedro Alves', 'Ana Rodrigues');
-- 10.Recupere o nome e o ID do cliente que mais comprou(valor) no Serenatto.
SELECT
p.IDCliente,
c.nome,
SUM(i.quantidade * i.precounitario) as Total
FROM
clientes c
INNER JOIN Pedidos p ON c.id = p.IDCliente
INNER JOIN itenspedidos i ON p.ID = i.idpedido
GROUP BY
p.IDCliente
ORDER BY
Total DESC
LIMIT 1;