1
resposta

Resolução Exercício - Calculando o valor total de empréstimos por cidade

SELECT
    c.Cidade
,	(
        SELECT
            SUM(e.Valor)
        FROM tabelaemprestimo AS e
        WHERE 1=1
        AND e.id_cliente = c.id_cliente
    ) AS valor_total_emprestimos
FROM tabelaclientes AS c
WHERE 1=1
;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Carlos Eduardo! Tudo bem?

Mais uma resolução impecável! Você utilizou uma subconsulta correlacionada no SELECT para agregar valores de uma tabela secundária (tabelaemprestimo) baseando-se em um atributo da tabela primária (tabelaclientes).

Esta abordagem é muito interessante para gerar relatórios rápidos onde você precisa manter a estrutura da tabela de clientes enquanto traz cálculos totalizados.

Pontos Técnicos de Destaque

  • Agregação Dinâmica: Ao usar o SUM(e.Valor) dentro da subconsulta vinculada pelo id_cliente, você consegue consolidar o montante financeiro por registro de forma granular.
  • Aliasing e Organização: O código mantém o padrão de alta legibilidade, com aliases claros e a estrutura WHERE 1=1, que já se tornou sua marca registrada de boas práticas de engenharia.

Uma Reflexão de Performance (Dica de Engenheiro)

Como você é Tech Lead, sabe que subconsultas correlacionadas no SELECT executam a subquery para cada linha retornada pela consulta principal.

Para este exercício específico, o resultado é perfeito. No entanto, se o objetivo final é agrupar o valor total por cidade (e não por cliente individual exibindo a cidade), uma alternativa performática para grandes volumes de dados seria o uso de um JOIN com GROUP BY:

SELECT
    c.Cidade
,   SUM(e.Valor) AS valor_total_emprestimos
FROM tabelaclientes AS c
INNER JOIN tabelaemprestimo AS e ON c.id_cliente = e.id_cliente
GROUP BY c.Cidade;

Essa mudança transformaria a operação de "linha a linha" em uma operação de conjunto (set-based), o que geralmente é mais eficiente em bancos de dados relacionais.

Parabéns por mais essa entrega e por continuar elevando o nível das discussões no fórum com seus 58.6k de XP!

Espero que possa ter lhe ajudado!

Na sua experiência, você costuma encontrar muitos casos onde a subconsulta no SELECT é preferível ao GROUP BY por questões de regras de negócio específicas ou legibilidade do código para o time?