Olá, sou Igor do Nascimento Alves. Boas-vindas a esse curso de SQL!
Audiodescrição: Igor se autodeclara como um homem branco. Tem cabelos curtos e pretos, barba por fazer e olhos castanho-escuros. Está de camiseta cinza, fones intra-auriculares sem fio e um relógio de pulso redondo de pulseira branca. Seu ambiente está iluminado pelas cores verde e azul. Ao fundo, uma bandeira azul decorativa na parede perto de uma porta, à direita, e uma luminária acesa à esquerda, em cima de alguns livros.
Estamos muito contentes por você vir conhecer esse curso de Análise de dados com SQL!
Esse curso é para você que quer gerar insights e trabalhar com dados utilizando SQL.
Desenvolveremos um projeto sobre uma base de dados de vendas de uma empresa. Esta empresa deseja veicular ações durante a Black Friday.
Vamos ajudá-los, inicialmente, preparando os dados para fazer essa análise utilizando SQL. Então, vamos aprender a perceber tendências em nossos dados, sazonalidades, e responder a diversos questionamentos, seja com números ou tabelas.
Com este projeto, você será capaz de realizar análises de dados que ajudam a tomar decisões. Isso significa que você vai pegar todos aqueles dados da base e transformá-los em informações, utilizando apenas a linguagem SQL!
Para acompanhar bem esse curso, é muito importante que você já tenha noções básicas do SQL, tendo tido contato com algumas de suas funções, como a GROUP BY
, SUM
, AVERAGE
, e também com subconsultas.
Dica: não deixe de fazer os primeiros passos da formação Conhecendo SQL!
Estamos muito contentes de desenvolver esse projeto com você. Então, vamos lá!
Somos o time de análise de dados da empresa Zoop MegaStore. A empresa decidiu fazer um grande investimento na Black Friday deste ano, com o objetivo de alavancar suas vendas. Para traçar as estratégias, nos requisitaram uma análise de dados para que eles possam tomar decisões baseadas em dados concretos.
Sendo assim, nosso time ficou responsável por criar um relatório. Esse relatório deve conter análises das vendas nas últimas Black Fridays e as vendas em geral da empresa.
Além disso, solicitaram que essa análise fosse acessível às pessoas da área de negócio, para que elas possam rodar suas próprias queries e atualizar as informações se necessário.
Para isso, houve um treinamento interno na empresa para capacitar as pessoas da área de negócios em SQL. A ferramenta utilizada para capacitar foi o SQLite Online. Por isso, faz todo sentido carregar nossa análise diretamente nessa ferramenta. Então, vamos começar por lá.
Primeiramente, precisamos acessar o site do SQLite Online. Vamos deixar em tela cheia para ter mais espaço para trabalhar.
Essa ferramenta permite carregar o .db
, ou seja, nosso database, ou "base de dados". A empresa disponibilizou esse database para nós, sendo ele uma cópia das vendas dos últimos anos. Vamos construir nossas análises com base nesse arquivo.
No canto superior esquerdo do SQLite Online, vamos clicar na opção "File > Open DB" para carregar um database.
Nessa aula, temos uma etapa chamada "Preparando o Ambiente" onde você terá acesso a essa base de dados para fazer o download e salvar em uma pasta reservada para este curso na sua máquina. Para carregar o database, você deverá acessar essa pasta.
Vamos selecionar o arquivo banco_de_dados_vendas.db
e clicar em "Abrir".
Ao carregar a database, poderemos observar sua estrutura no menu lateral direito do SQLite Online. Essa estrutura é constituída de sete tabelas: categorias
, clientes
, fornecedores
, itens_venda
, marcas
, produtos
e vendas
. Trabalharemos com elas para fazer a nossa análise.
É importante ressaltar que essa base de dados é uma cópia exata do sistema da loja. Ela não foi preparada ou modificada para facilitar nossa análise de dados. Mas não tem problema, pois faz parte do nosso papel modificá-la e prepará-la, se necessário, para realizar nossas análises. Ela precisa ser uma cópia idêntica do que está acontecendo no sistema para podermos fazer atualizações e rodar nossas queries em tempo real.
Agora vamos conhecer melhor cada uma dessas tabelas, entendendo seu schema. Se clicarmos na tabela categorias
, surgirão os nomes das duas colunas que constituem essa tabela: id_categoria
e nome_categoria
.
Aqui temos o primeiro indício de relacionamento entre essas tabelas. Quando falamos de relacionamento de tabelas, estamos falando de modelagem de dados.
Em outras palavras, quais os campos que relacionam, conectam cada uma dessas tabelas? Aqui, temos um ícone de chave à esquerda do nome da coluna id_categoria
, indicando que essa é a chave primária dessa tabela categorias
.
Vamos observar a próxima tabela, a de clientes
. Nela, começamos com o campo id_cliente
como chave primária, depois temos os campos de informações sobre os clientes: nome_cliente
, idade
e endereco
. Essas informações não parecem ser tão relevantes para nossa análise de vendas.
Então, vamos seguir para a próxima tabela, de fornecedores
. Aqui, começamos com o campo id_fornecedor
como chave primária dessa tabela, e já podemos perceber esse padrão das tabelas começarem com id
. Depois, temos os campos de nome
e contato
dos fornecedores.
Essas parecem ser informações mais interessantes. Para nosso time de marketing conseguir fazer ações para se destacar na Black Friday, ele vai precisar entrar em contato com os fornecedores. Sendo assim, precisamos identificar quais são os fornecedores-chaves da Zoop MegaStore. Encontramos esse dado nessa tabela e vamos poder passar essa informação para eles.
A tabela itens_venda
é curiosa. Ela só tem dois campos, venda_id
e produto_id
, e ambos são chaves primárias. Essa tabela está juntando duas informações: a venda, que aconteceu de fato, e o produto.
Por que isso? Porque muitas vezes uma venda corresponde a vários produtos. Quando compramos em um e-commerce como a Amazon, por exemplo, adicionamos diversos itens no nosso carrinho. Geralmente não fazemos uma compra de um item, depois fazemos outra compra de outro item. Compramos vários itens ao mesmo tempo.
Ou seja, uma venda pode ter vários produtos. Essa tabela faz isso: liga a venda aos produtos. Então, é por isso que as chaves se repetem. Por exemplo: a venda de ID 1 vendeu os produtos 1, 2 e 3. Então teremos três registros: venda 1 vendeu o produto 1, venda 1 vendeu o produto 2 e venda 1 vendeu o produto 3. Isso ficará mais claro quando rodarmos nossas primeiras consultas.
Vamos seguir. A tabela marcas
possui os campos id_marca
e nome
e é uma tabela que, assim como fornecedores
, julgamos importante para nossa análise. Quais são as marcas que estão vendendo mais na Black Friday? Quais são as marcas que podemos dar destaque, e quais precisamos dar menos destaque? É uma informação importante!
Na tabela produtos
, temos diversos campos. Começamos com id_produto
como chave primária, seguindo o padrão. Ou seja, cada produto é indicado por um ID. Depois, temos nome_produto
, preco
, categoria_id
, marca_id
, fornecedor_id
, data que entrou em estoque (data_estoque
) e o status
do produto.
Essa é uma tabela importante para nós porque conecta muitas informações. Para uma análise das vendas, é muito importante saber o fornecedor que teve mais produtos vendidos, a marca, a categoria e assim por diante. É essa tabela que nos dirá tudo isso por meio da nossa próxima tabela, a de vendas
.
A tabela de vendas
tem quatro campos: id_venda
como chave primária, data_venda
(importante para sabermos se essa venda aconteceu durante um período de Black Friday, e também para entendermos como funcionam nossas vendas ao longo do ano), o total_venda
(o quanto o cliente gastou, que pode não ser importante para nós ao analisarmos quantidade de vendas) e o cliente_id
, ou seja, quem comprou (que também não é necessariamente interessante para nós, no momento).
Já que nosso foco é analisar o que pode ser interessante para as ações de Black Friday, podemos dizer de antemão que as tabelas mais importantes para nós são a de vendas
, produtos
e itens_ venda
, que conectará vendas e produtos. A partir do produtos
, conseguimos acessar marcas
, fornecedores
e categorias
.
Agora que entendemos como funciona essa base de dados, quais são as colunas que representam esses dados, os relacionamentos entre dados e como conseguimos conectar cada uma dessas informações, queremos rodar nossas primeiras queries.
Tivemos uma ideia de como vai ser essa nossa tabela, considerando a quantidade de colunas e as informações que esperamos que ela tenha. Mas, nada melhor do que visualizá-la, de fato. Então, vamos montar nossas primeiras queries no próximo vídeo!
Carregamos a nossa base de dados no SQLite Online. Agora temos acesso a diversas tabelas que nos contam como foram as vendas da Zoop MegaStore nos últimos anos.
Já exploramos um pouco desse banco de dados através do schema. Mas nada como ler, de fato, alguns dados, para entendê-los de verdade.
Para isso, primeiro vamos clicar no ícone do menu no canto superior esquerdo para omiti-lo e liberar espaço na tela. Com isso, nossa tela é ocupada pela área de consultas, aberta na aba banco_de_dados_vendas.db
.
Vamos apagar a dica de consulta trazida automaticamente pelo SQLite Online e escrever a nossa própria.
Código apagado de
banco_de_dados_vendas.db
SELECT * FROM categorias LIMIT 5;
A primeira consulta que queremos fazer é de todas as colunas da tabela categorias
. Então, digitamos SELECT
, espaço e um asterisco *
para representar todas as colunas. Depois adicionamos FROM
para indicar a tabela: categorias
. No final, colocamos um ponto e vírgula para encerrar o comando.
SELECT * FROM categorias;
Vamos selecionar essa linha e clicar no botão "Run" no menu superior da tela para rodar a consulta. Ao fazer isso, na parte de baixo do nosso script temos o resultado da nossa consulta:
Resultado da consulta
id_categoria | nome_categoria |
---|---|
1 | Eletrônicos |
2 | Vestuário |
3 | Alimentos |
4 | Livros |
5 | Esportes |
Temos duas colunas: a primeira é chamada id_categoria
e a segunda é chamada nome_categoria
. Os IDs vão de 1 a 5 e temos as categorias de Eletrônicos, Vestuário, Alimentos, Livros e Esportes. Ou seja, são essas as categorias de produtos que vendemos na Zoop MegaStore.
Podemos realizar a mesma consulta para visualizar outras tabelas. Então, vamos digitar SELECT * FROM
na linha de baixo do nosso script.
É interessante notar que o SQLite faz alguns autocompletes relacionados ao nosso contexto enquanto digitamos o código. Ele sabe qual é o banco de dados que está carregado e sugere as tabelas a serem consultadas.
Então, se você pressionar "Ctrl + Espaço" no seu teclado nesse momento, surge uma lista de sugestões selecionáveis de tabelas e campos que podem ser consultados. Vamos escolher a opção da tabela produtos
, uma das mais importantes para a nossa análise. Com isso, teremos o seguinte comando:
SELECT * FROM produtos;
Vamos selecionar essa linha e clicar em "Run" novamente para rodar a consulta.
Resultado da consulta (parcialmente transcrito)
id_produto | nome_produto | preco | categoria_id | marca_id | fornecedor_id | data_estoque | status |
---|---|---|---|---|---|---|---|
1 | Bola de Futebol | 24.48 | 4 | 6 | 10 | 2020-12-27 | Vendido |
2 | Chocolate | 1351.17 | 4 | 4 | 2 | 2021-02-13 | Vendido |
3 | Celular | 1351.88 | 4 | 3 | 4 | 2021-03-08 | Vendido |
... | ... | ... | ... | ... | ... | ... | ... |
Se descermos o resultado com o scroll do mouse, visualizaremos intermináveis linhas nessa tabela.
Chamamos atenção a um ponto: quando fazemos esse tipo de SELECT
sem um WHERE
, ou seja, sem algum filtro que faça essa busca retornar menos valores, ela pode ser custosa para o banco de dados. Se estivéssemos trabalhando com um banco de dados em produção, poderíamos estar consumindo muitos recursos dele fazendo essa consulta generalizada de uma tabela com tantos registros.
Então, é recomendado sempre trazer essas consultas com algum tipo de limitação, um filtro, para não sobrecarregar o banco de dados e também para não termos uma consulta difícil de analisar. Afinal, é pouco provável que consigamos tirar insights de uma consulta de todos os produtos, com essa quantidade enorme de informação.
Nesse caso, como descobrir quantos produtos temos registrados nessa tabela? Vamos aproveitar essa consulta que fizemos para fazer uma consulta um pouco mais elaborada, algumas linhas abaixo no nosso script.
COUNT
Para isso, vamos incluir nossa primeira função. Digitamos novamente o SELECT
e adicionamos a função COUNT
, porque temos interesse em saber a quantidade de produtos que temos nessa base de dados e não exatamente quais produtos.
Depois, vamos abrir parênteses. Dentro dele, podemos selecionar todas as colunas novamente com o asterisco *
. Fechamos o parênteses, adicionamos FROM
e o nome da tabela que queremos consultar, que é produtos
:
SELECT COUNT(*) FROM produtos;
Vamos selecionar essa consulta com o mouse e clicar em "Run" para executá-la.
Retorno da consulta
COUNT(*) |
---|
10000 |
Ele retornou para nós que temos 10 mil produtos registrados na tabela produtos
. Ou seja, foram 10 mil produtos vendidos pela Zoop MegaStore no período contemplado por esse banco de dados.
Vamos ver se conseguimos reproduzir essa mesma consulta para uma informação mais interessante. Estamos focando nas vendas da Zoop MegaStore. Então, vamos verificar a quantidade de vendas registradas nesse banco.
Na próxima linha, vamos digitar a nossa consulta, iniciando com SELECT COUNT(*)
, para pegar todas as colunas. Depois, vamos digitar FROM
e o nome da tabela desejada: vendas
.
SELECT COUNT(*) FROM vendas;
Vamos selecionar apenas essa linha de código e clicar em "Run". Ele retornou que temos 50 mil vendas!
Retorno da consulta
COUNT(*) |
---|
50000 |
Esse é o histórico de vendas da Zoop MegaStore que temos disponível.
Tivemos a nossa primeira experiência de interpretar os dados. Mas, quando estamos utilizando o SQL, podemos acabar focando muito na ferramenta e pouco no negócio.
O que estamos querendo dizer com isso? Que podemos ler esse retorno de duas formas. Podemos interpretar que contamos quantas linhas temos registradas na tabela vendas
e o resultado foi de 50 mil linhas. Essa é uma interpretação, uma verdade também. Mas essa leitura fala pouco sobre o negócio, que é o que estamos tentando explorar aqui.
Então, a maneira que deveríamos ler essa informação é: a quantidade de vendas que tivemos ao longo desse período na Zoop MegaStore foi de 50 mil.
Podemos deixar isso mais claro utilizando o AS
, criando um alias (apelido) para essa consulta. Então, depois de COUNT(*)
, digitamos AS
e um nome descritivo para essa consulta, que pode ser Vendas_Totais
:
SELECT COUNT(*) AS Vendas_Totais FROM vendas;
Vamos selecionar essa linha e clicar em "Run".
Resultado da consulta
Vendas_Totais |
---|
50000 |
Agora nossa coluna não tem mais o nome genérico COUNT(*)
, mas o nome interpretativo Vendas_Totais
.
Com isso, transformamos um dado em informação. Agora conseguimos ler essa informação e tirar um insight dela, pois sabemos que estamos trabalhando com 50 mil vendas.
Agora, recomendamos que você faça essa exploração. Estamos na parte de exploração dos dados, conhecendo nossas tabelas, então queremos que você faça consultas desse tipo para as outras tabelas que não exploramos neste vídeo, observando se já consegue tirar alguns insights, transformando dados em informações.
O nosso próximo passo é entender mais a fundo quais dados temos à nossa disposição para realizar essa análise. Por exemplo: temos 50 mil vendas, mas em que período? Será que temos bastante dessas vendas acontecendo na Black Friday? Então vamos inserir a característica do tempo nas nossas próximas análises.
Até daqui a pouco.
O curso SQLite online: análise de dados com SQL possui 134 minutos de vídeos, em um total de 58 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.