1
resposta

02 Separando os dados por região - Pensem nisso

E se o código for feito assim de forma que possa passar um entendimento melhor para o aluno com comentários. É só pedir para a IA comentar e fazer alguns complementos como fiz. Uma vez feito vai ficar para todas as aulas futuras. O tempo gasto foi muito pouco, mas a diferença no entendimento para o aluno vai fazer muita diferença.
Eu que já dei muitas aulas e vejo as coisas pelos dois lados. Até para futuras manutenção no código. Como valorizou mais o código principalmente para o professor que está dando aula e para aqueles que olharem. Vi isso muitas vezes aqui nos cursos da alura.
< -- Pensem nisso. -- >

select
year(data_inicio) as ano, -- Extrai o ano da data de início do aluguel e o nomeia como 'ano'
month(data_inicio) as mes, -- Extrai o mês da data de início do aluguel e o nomeia como 'mes'
count(*) as total_alugueis -- Conta o total de registros (alugúeis) para cada combinação de ano e mês ou seja cada época
from
alugueis a -- Define a tabela 'alugueis' como a origem principal dos dados (apelidada de 'a')
join
hospedagens h on a.hospedagem_id = h.hospedagem_id -- Junta com a tabela 'hospedagens' usando o ID da hospedagem asociando o aluguel a um imovél a uma hospedagen
join
enderecos e on h.endereco_id = e.endereco_id -- Junta com a tabela 'enderecos' usando o ID do endereço essa hospedagem vamos associar a um endereço
join
regioes_geograficas r on e.estado = r.estado -- Junta com a tabela 'regioes_geograficas' usando a sigla do estado para trazer além do estado trazer também uma camada acima
where
r.regiao = "Sudeste" -- Filtra os resultados para exibir apenas os dados da região Sudeste
group by
ano, mes -- Agrupa os dados por ano e mês para permitir a contagem do total
order by
ano, mes; -- Organiza o resultado final em ordem cronológica (do ano/mês mais antigo ao mais recente)

1 resposta

Olá, Fábio. Como vai?

Sua contribuição é extremamente pertinente e toca em um ponto crucial do desenvolvimento de software e da análise de dados: a comunicabilidade do código. Como você bem pontuou, o código não é escrito apenas para a máquina executar, mas também para que outros seres humanos (ou você mesmo no futuro) possam entender a lógica aplicada.

O uso de comentários estratégicos, como você demonstrou, transforma um simples JOIN em uma narrativa que explica o relacionamento entre as entidades: aluguel -> hospedagem -> endereço -> região.

Para complementar a sua reflexão sobre boas práticas e manutenção de código SQL, gostaria de acrescentar alguns pontos que valorizam ainda mais o trabalho do desenvolvedor/analista:

Indentação e Legibilidade
Além dos comentários, a forma como estruturamos o texto (o "shape" do código) ajuda na leitura rápida. Manter as palavras-chave como SELECT, FROM e JOIN alinhadas à esquerda e os campos recuados facilita a identificação das cláusulas.

Uso de Aliases (Apelidos) Significativos
Você utilizou aliases curtos (a, h, e, r). Em consultas muito extensas ou em procedimentos complexos (Stored Procedures), trocar a por aluguel ou r por regiao pode reduzir a carga cognitiva de quem está lendo, eliminando a necessidade de voltar ao FROM para lembrar o que cada letra significa.

O Papel da IA na Documentação
Concordo plenamente com você: pedir para a IA gerar uma primeira versão dos comentários economiza tempo e garante que nenhum passo da lógica seja esquecido. Para quem está ensinando, isso permite focar na estratégia da análise e não apenas na sintaxe. Um prompt eficiente para isso seria:

-- Prompt sugerido:
-- "Explique a lógica de negócio por trás deste SQL, focando no relacionamento entre as tabelas e no objetivo do agrupamento."

Manutenção e Performance
Comentar o "porquê" de um filtro (como o WHERE r.regiao = "Sudeste") é vital. Às vezes, um filtro está lá por uma regra de negócio específica daquele trimestre, e sem o comentário, um futuro desenvolvedor pode ter medo de removê-lo ou alterá-lo.

Sua visão como instrutor agrega muito à comunidade, pois incentiva os alunos a desenvolverem o pensamento crítico sobre a clareza do que estão entregando.

Espero que possa ter lhe ajudado!