Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Mão na massa: hora da prática (Resolvido)

Segue a resolução dos 10 exercicios propostos. Obs - A resolução é um pouco diferente, porem as saidas são a mesma do professor.

/* Traga todos os dados da cliente Maria Silva.*/
SELECT CL.nome,
       PD.idcliente,
       PD.datahorapedido,
       PD.status,
       PR.nome AS produto_nome,
       IP.idproduto,
       IP.quantidade,
       IP.precounitario
FROM CLIENTES CL
INNER JOIN PEDIDOS PD ON CL.id = PD.idcliente
INNER JOIN ITENSPEDIDOS IP ON PD.id = IP.idpedido
INNER JOIN PRODUTOS PR ON IP.idproduto = PR.id
WHERE CL.nome = 'Maria Silva';


/* Busque o ID do pedido e o ID do cliente dos pedidos onde o status esteja como entregue. */
SELECT  CL.id,
        CL.nome,
        PD.id AS 'ID_PEDIDO',
        PD.idcliente AS 'ID_CLIENTE',
        PD.status
FROM clientes CL
INNER JOIN pedidos PD ON CL.id = PD.idcliente
WHERE PD.status = 'Entregue';

/* Retorne todos os produtos onde o preço seja maior que 10 e menor que 15. */

SELECT * FROM PRODUTOS WHERE PRECO > 10.0 AND PRECO < 15.0;

/*Busque o nome e cargo dos colaboradores que foram contratados entre 2022-01-01 e 2022-06-31. */

SELECT NOME, CARGO FROM colaboradores WHERE datacontratacao BETWEEN '2022-01-01' AND '2022-06-31';

/*Recupere o nome do cliente que fez o primeiro pedido. */

SELECT CL.nome, PD.datahorapedido
FROM CLIENTES CL
INNER JOIN PEDIDOS PD ON CL.id = PD.idcliente
ORDER BY datahorapedido LIMIT 1;

/*Liste os produtos que nunca foram pedidos. */

SELECT *
FROM PRODUTOS PR
LEFT JOIN ITENSPEDIDOS IP ON PR.id = IP.idproduto
WHERE IP.idproduto IS NULL;

/*Liste os nomes dos clientes que fizeram pedidos entre 2023-01-01 e 2023-12-31. */

SELECT CL.nome, PD.datahorapedido
FROM CLIENTES CL
INNER JOIN PEDIDOS PD ON CL.id = PD.idcliente
WHERE PD.datahorapedido BETWEEN '2023-01-01' AND '2023-12-31';

/* Recupere os nomes dos produtos que estão em menos de 15 pedidos. */

SELECT PR.nome AS 'PRODUTOS QUE ESTÃO EM MENOS DE 15 PEDIDOS'
FROM PRODUTOS PR
INNER JOIN itenspedidos IP ON PR.id = IP.idproduto
GROUP BY PR.nome
HAVING COUNT(IP.idpedido) < 15;

/* Liste os produtos e o ID do pedido que foram realizados pelo cliente "Pedro Alves" ou pela cliente "Ana Rodrigues". */

SELECT CL.NOME, PR.NOME,PR.descricao,IP.idpedido
FROM CLIENTES CL
INNER JOIN PEDIDOS PD ON CL.id = PD.idcliente
INNER JOIN ITENSPEDIDOS IP ON PD.id = IP.idpedido
INNER JOIN produtos PR ON IP.idproduto = PR.id
WHERE CL.nome = 'Pedro Alves' OR CL.nome = 'Ana Rodrigues'
ORDER BY IP.idpedido ASC;


/* Recupere o nome e o ID do cliente que mais comprou(valor) no Serenatto */ 

SELECT CL.nome, CL.id, SUM(IP.quantidade * IP.precounitario) AS total_comprado
FROM CLIENTES CL
INNER JOIN PEDIDOS PD ON CL.id = PD.idcliente
INNER JOIN ITENSPEDIDOS IP ON PD.id = IP.idpedido
GROUP BY CL.nome, CL.id
ORDER BY total_comprado DESC
LIMIT 1;
1 resposta
solução!

Oi, Douglas! Tudo bem?

Parabéns pelo código, ficou super bacana! A prática do conteúdo é algo que nos ajuda a internalizar o conhecimento adquirido e nesse processo caso tenha restado alguma dúvida em específico, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!