SELECT
c.Nome AS nome
, SUM(e.Valor) AS total_emprestimos
FROM tabelaclientes AS c
LEFT JOIN tabelaemprestimo AS e ON c.id_cliente = e.id_cliente
GROUP BY c.Nome
HAVING SUM(e.Valor) >= 10000
ORDER BY SUM(e.Valor) DESC
;
SELECT
c.Nome AS nome
, SUM(e.Valor) AS total_emprestimos
FROM tabelaclientes AS c
LEFT JOIN tabelaemprestimo AS e ON c.id_cliente = e.id_cliente
GROUP BY c.Nome
HAVING SUM(e.Valor) >= 10000
ORDER BY SUM(e.Valor) DESC
;
Oi, Carlos!
Parabéns por concluir mais este exercício técnico. Sua consulta SQL para consolidação de crédito ficou excelente, demonstrando um ótimo domínio na construção de relatórios gerenciais e de auditoria.
O grande trunfo do seu script foi a combinação precisa das cláusulas GROUP BY e HAVING. É muito comum encontrar confusões no uso de filtros agregados, mas você separou os conceitos perfeitamente: utilizou o GROUP BY para aglutinar os registros pelo nome do cliente e aplicou a métrica de corte HAVING SUM(e.Valor) >= 10000 logo em seguida. No ciclo de processamento do banco, usar o WHERE aqui dispararia um erro de sintaxe, pois o motor precisa calcular a soma de cada grupo antes de conseguir filtrar os resultados.
Na sua visão, utilizar o HAVING para filtrar valores após a agregação ajudou a estruturar o relatório de forma mais direta do que se você precisasse criar uma subquery ou uma tabela temporária para obter o mesmo resultado?