WITH total_emprestimos AS (
SELECT
SUM(e.Valor) AS total_emprestimos_pendentes
FROM tabelaemprestimo AS e
WHERE NOT e.Status
)
SELECT
total_emprestimos_pendentes
FROM total_emprestimos
;
WITH total_emprestimos AS (
SELECT
SUM(e.Valor) AS total_emprestimos_pendentes
FROM tabelaemprestimo AS e
WHERE NOT e.Status
)
SELECT
total_emprestimos_pendentes
FROM total_emprestimos
;
Olá, Carlos. Como vai?
Parabéns pela excelente resolução do exercício! O seu código está impecável e demonstra uma aplicação perfeita de CTE (Common Table Expressions) no SQL Server/MySQL.
O uso da cláusula WITH para criar a tabela temporária nominal total_emprestimos é uma das melhores práticas no dia a dia de um Engenheiro de Dados. Ela isola a regra de agregação (SUM) e o filtro de negócio de forma modular, deixando a consulta principal (o SELECT de fechamento) extremamente limpa, legível e de fácil manutenção para o time.
Para enriquecer o seu post no fórum e trazer uma perspectiva avançada para os outros estudantes, vamos analisar dois detalhes técnicos muito interessantes da sua query:
WHEREA sua condição de filtro ficou muito elegante:
WHERE NOT e.Status
Muitos analistas iniciantes costumam escrever de forma literal (ex: WHERE e.Status = 0 ou WHERE e.Status = 'False'). A sua abordagem utilizando o operador lógico NOT indica que a coluna Status foi modelada como um tipo booleano (BIT ou BOOLEAN). No SQL, o NOT inverte o valor de verdadeiro para falso, filtrando de forma limpa apenas os registros onde o empréstimo ainda está ativo ou pendente de devolução.
Como a coluna retorna um valor financeiro consolidado (no seu print, o retorno foi 107000), uma excelente sugestão de evolução para queries que alimentam relatórios diretos para o negócio é aplicar uma máscara de formatação monetária.
Se o seu banco de dados for o MySQL/MariaDB, você pode encapsular a soma com a função FORMAT(). Se for no SQL Server, pode utilizar a função FORMAT() com a cultura de localização do Brasil. Veja o exemplo adaptado para o padrão brasileiro:
WITH total_emprestimos AS (
SELECT
-- Formata o valor final para o padrão R$ #.###,##
FORMAT(SUM(e.Valor), 'C', 'pt-BR') AS total_emprestimos_pendentes
FROM tabelaemprestimo AS e
WHERE NOT e.Status
)
SELECT
total_emprestimos_pendentes
FROM total_emprestimos;
Essa pequena adição transforma o resultado bruto numérico em uma string já pronta para o consumo de gerentes e analistas financeiros, poupando tempo na hora de exportar para planilhas ou relatórios rápidos.
Seu domínio na estruturação de CTEs é evidente. Continue compartilhando seus códigos e soluções por aqui!
Espero que possa ter lhe ajudado!