Boa tarde!
SELECT
CIDADE,
COUNT(*) AS TOTAL_EMPRÉSTIMOS_ATIVOS
FROM CLIENTES
JOIN
EMPRESTIMO
ON
CLIENTES.ID_CLIENTE = EMPRESTIMO.ID_CLIENTE
WHERE
STATUS = 1
GROUP BY CIDADE;
Saída:
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde!
SELECT
CIDADE,
COUNT(*) AS TOTAL_EMPRÉSTIMOS_ATIVOS
FROM CLIENTES
JOIN
EMPRESTIMO
ON
CLIENTES.ID_CLIENTE = EMPRESTIMO.ID_CLIENTE
WHERE
STATUS = 1
GROUP BY CIDADE;
Saída:
Olá, Estudante. Como vai?
Parabéns por mais uma excelente resolução! Seu código SQL está impecável e atinge perfeitamente o objetivo do exercício, demonstrando que você compreendeu muito bem a mecânica de agrupamentos e contagens no banco de dados.
Analisando a imagem do resultado, a consulta retornou exatamente o que foi proposto. Gostaria de destacar os pontos fortes da estrutura do seu script:
WHERE: Filtrar por STATUS = 1 antes de realizar o agrupamento é a estratégia correta e mais performática. Isso garante que o banco de dados descarte os registros inativos logo no início, contando apenas o que realmente importa (os empréstimos ativos).GROUP BY: A cláusula GROUP BY CIDADE combinada com a função de agregação COUNT(*) funcionou perfeitamente. O SQL separou as linhas em "gavetas" por cidade e contou quantas ocorrências ativas existiam dentro de cada uma delas.Como sugestão de boa prática para enriquecer ainda mais o seu desenvolvimento em banco de dados, vale o mesmo ponto de atenção sobre a ambiguidade que comentamos anteriormente: o uso de aliases (apelidos) para as tabelas.
Além disso, em sistemas que possuem bancos de dados muito grandes, utilizar o caractere coringa COUNT(*) obriga o banco a ler todas as colunas de todas as linhas filtradas para efetuar a contagem. Uma convenção de mercado muito utilizada para otimizar a performance é contar diretamente a chave primária da tabela que você está mensurando.
Veja como o seu código ficaria aplicando essas duas boas práticas (apelidos e contagem direcionada):
SELECT
c.CIDADE,
COUNT(e.ID_EMPRESTIMO) AS TOTAL_EMPRÉSTIMOS_ATIVOS
FROM
CLIENTES c
JOIN
EMPRESTIMO e ON c.ID_CLIENTE = e.ID_CLIENTE
WHERE
e.STATUS = 1
GROUP BY
c.CIDADE;
Repare que ao usar COUNT(e.ID_EMPRESTIMO), deixamos claro para o motor do banco de dados qual coluna ele deve computar, tornando a consulta mais rápida e explícita para quem lê o código.
Seu progresso nos desafios de SQL e consultas complexas está excelente. Continue com esse ótimo ritmo de estudos!
Espero que possa ter lhe ajudado!