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:
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!