
Quando termina uma competição, começam as comparações.
Qual seleção jogou melhor?
Quem teve a defesa mais consistente?
Quem foi o melhor jogador?
E uma pergunta aparece com frequência:
Qual seleção teve o melhor ataque?
A resposta parece simples.
Basta contar os gols.
Mas, para quem está aprendendo SQL, essa é uma excelente oportunidade para desenvolver uma habilidade muito mais importante do que simplesmente escrever comandos.
É aprender a transformar uma pergunta de negócio em uma consulta ao banco de dados.
O primeiro erro é abrir o editor SQL
Muita gente faz isso.
Abre o editor.
Escreve um SELECT.
Depois tenta descobrir quais tabelas utilizar.
Um analista experiente faz exatamente o contrário.
Ele começa entendendo o problema.
Neste caso, queremos responder:
Qual seleção marcou mais gols durante toda a competição?
Agora sim começamos a pensar no banco de dados.
Quais tabelas precisamos?
Antes de escrever qualquer consulta, precisamos entender onde essa informação está armazenada.
Sabemos que:
- cada gol foi registrado;
- cada gol pertence a uma seleção;
- cada seleção possui um cadastro próprio.
Logo, as duas tabelas mais importantes são:
GOLTIME
Só depois de identificar isso é que pensamos no SQL.
Perceba como o raciocínio vem antes da sintaxe.
Esse é exatamente o princípio do SQL 3C.
Montando a consulta
Agora podemos escrever uma consulta bastante simples.
SELECT
T.NOME_POPULAR,
COUNT(*) AS TOTAL_GOLS
FROM GOL G
INNER JOIN TIME T
ON T.ID_TIME = G.ID_TIME
GROUP BY
T.ID_TIME,
T.NOME_POPULAR
ORDER BY TOTAL_GOLS DESC;À primeira vista, pode parecer apenas mais uma consulta.
Mas ela reúne diversos conceitos importantes.
Vamos analisá-la por partes.
O JOIN
A tabela GOL registra cada gol da competição.
Porém, ela não guarda o nome da seleção.
Ela possui apenas a chave que identifica o time.
Por isso fazemos o relacionamento com a tabela TIME.
INNER JOIN TIME T
ON T.ID_TIME = G.ID_TIMEEsse é um padrão muito comum em bancos relacionais.
As informações ficam distribuídas entre tabelas diferentes.
Cabe ao SQL reuni-las.
O COUNT
Depois queremos descobrir quantos gols cada seleção marcou.
Para isso utilizamos:
COUNT(*)Como cada registro representa um gol, contar os registros significa contar gols.
Simples.
Mas extremamente útil.
O GROUP BY
Aqui está um dos conceitos mais importantes para quem está aprendendo SQL.
Se queremos contar gols por seleção, precisamos agrupar os registros.
É exatamente isso que faz o GROUP BY.
GROUP BY
T.ID_TIME,
T.NOME_POPULARSem esse agrupamento, o banco retornaria apenas o total geral de gols da competição.
O ORDER BY
Depois de calcular os totais, queremos visualizar primeiro quem marcou mais.
Para isso utilizamos:
ORDER BY TOTAL_GOLS DESC;Agora o resultado já aparece em ordem decrescente.
Quem marcou mais gols aparece no topo.
O que aprendemos?
Perceba que essa consulta utiliza apenas alguns comandos.
SELECTINNER JOINCOUNTGROUP BYORDER BY
Mesmo assim, ela responde uma pergunta real.
É exatamente esse tipo de problema que um analista encontra no dia a dia.
Será que mais gols significam o melhor ataque?
Aqui existe uma reflexão interessante.
Marcar muitos gols é um ótimo indicador.
Mas será que ele é suficiente?
Talvez não.
Poderíamos considerar outros fatores, como:
- média de gols por partida;
- quantidade de finalizações;
- eficiência ofensiva;
- gols nas fases eliminatórias;
- distribuição dos gols entre os jogadores.
Perceba como uma pergunta simples pode gerar várias outras análises.
É justamente assim que surgem novos projetos de SQL.
Um desafio para você
Agora que você já sabe como descobrir quem marcou mais gols, tente responder outras perguntas utilizando o mesmo banco de dados.
Por exemplo:
- Qual seleção sofreu menos gols?
- Qual teve o melhor saldo?
- Qual atleta marcou mais gols?
- Qual fase teve mais gols?
- Em quais partidas aconteceram mais gols?
Todas essas perguntas podem ser respondidas utilizando o mesmo modelo de dados.
E cada uma delas ensina novos conceitos de SQL.
Conclusão
Quando começamos a estudar SQL, é comum acreditar que a dificuldade está nos comandos.
Na prática, o verdadeiro desafio é entender o problema e descobrir onde os dados estão armazenados.
Depois disso, a consulta passa a fazer sentido.
Foi exatamente isso que fizemos neste artigo.
Começamos com uma pergunta.
Identificamos as tabelas necessárias.
Relacionamos os dados.
Agrupamos os registros.
E chegamos à resposta.
É esse processo que transforma alguém que apenas escreve consultas em alguém que realmente sabe analisar dados.
Próximo passo
Se você gostou deste estudo de caso, saiba que ele representa apenas uma pequena parte do que é possível fazer com o SQL na Copa.
O projeto reúne um banco de dados relacional completo da Copa do Mundo, com dezenas de tabelas, relacionamentos e informações que permitem criar consultas, relatórios e análises muito próximas das que um analista desenvolve no mercado.
Mais do que praticar comandos, você aprende a investigar dados, formular hipóteses e construir projetos que fortalecem seu portfólio.
0 Comentários