0
respostas

Módulo 4 - Total dos pedidos feitos por cada cliente

select 
    clientes.id_cliente, -- mostrando o id do cliente
    clientes.nome, -- mostrando o nome do cliente
    sum(itens_de_pedido.preco_unitario) as valor_total -- preco_unitario = itens_de_pedido.quantidade * produtos.preco
from clientes left join pedidos on clientes.id_cliente = pedidos.id_cliente_fk
left join itens_de_pedido on pedidos.id_pedido = itens_de_pedido.id_pedido_fk
-- left join aqui foi necessário para manter os campos NULL dos clientes que NÃO pediram nada ainda
group by clientes.id_cliente, clientes.nome 
-- group by agrupando pelo id e nome do cliente 
-- (é uma boa prática sempre usar o campo de id no group by, dado que ele é chave primária)
order by valor_total desc;
-- odernamos a view de forma descrescente pelo valor_total, que é quanto o cliente gastou nos pedidos

/*Se você precisar tirar a prova real da consulta acima, só substitua o número do id_cliente_fk da cláusula where
pelo id do cliente que você quer conferir*/
select sum(itens_de_pedido.preco_unitario)
from (
    select id_pedido, id_cliente_fk
    from pedidos
    where id_cliente_fk = 14
) as pedidos
join itens_de_pedido on pedidos.id_pedido = itens_de_pedido.id_pedido_fk;