Você quer aprender como resolver Exercícios de Análise de Dados no SQL? Vem comigo aprender a solucionar 5 problemas hoje!
Na aula de hoje eu quero falar sobre análises de dados simples no SQL, ou seja, quais as análises e cálculos fundamentais
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala Impressionadores! Na aula de hoje eu quero te mostrar como fazer análises de dados de forma simples no SQL.
Mesmo análises de dados avançadas no SQL vão ficar mais simples dessa forma.
Para isso eu vou te mostrar os tipos de análises de dados que temos:
Ficou curioso para saber mais? Então vem comigo que eu vou te mostrar!
O SQL é uma linguagem muito poderosa para trabalhar com dados, mas muita gente não faz ideia das possibilidades de soluções que temos dentro do próprio SQL, principalmente para Análises de Dados.
Inicialmente, quero te dizer quais análises você consegue fazer diretamente no SQL, sem a necessidade de usar nenhum outro programa ou códigos extremamente complexos.
Média Móvel
Uma análise muito comum é a de Média Móvel. O principal objetivo desse tipo de análise é identificar tendências de crescimento, diminuição ou estabilidade.
Por exemplo, na área de Sucesso do Cliente (Customer Success) podemos avaliar, através da média móvel, como tem sido a evolução do engajamento do cliente com o nosso produto ou serviço.
Acumulado no Tempo
Esse tipo de análise é clássico e autoexplicativo. Calcular um determinado valor acumulado no tempo.
Por exemplo, se quisermos saber como se deu o acumulado do faturamento ao longo dos meses para entender se estamos caminhando em direção de uma meta específica, essa será a análise que faremos.
Variação Percentual
Em uma base de clientes, podemos ter aqueles que são do Rio de Janeiro, São Paulo, Amazonas, Pernambuco e assim vai. Como saber qual estado tem a maior quantidade de clientes? Precisamos fazer um percentual do total.
Se temos 100 clientes no Mato Grosso, de um total de 1000 clientes, o % de Mato Grosso em relação ao total é de 10%. Com esse tipo de análise, é possível saber qual estado é mais representativo, e assim executar algum tipo de estratégia para alavancar os resultados da empresa.
Ranking de Valores
Quem são os top 10 clientes que mais compram na sua loja? Para descobrir isso, é necessário criar um Ranking, ou seja, uma classificação de clientes, conforme o total de receita de cada cliente na sua loja.
Comparativos MoM e YoY
Como se deu o crescimento da empresa de um mês para o outro? E de um ano para o outro? A empresa está crescendo ou caindo? Com essas análises de Mês vs. Mês e Ano vs. Ano é possível ter essa clareza. Se em janeiro o resultado da empresa foi 10 e em fevereiro o resultado foi 12, temos que a empresa cresceu 20% naquele período de 1 mês.
Agora se o resultado de dezembro do ano atual foi de 50 e o resultado de dezembro do ano anterior foi de 60, sabemos que a empresa caiu 16% no período de 12 meses. Essas análises vão nortear as decisões de negócio.
Mas, como fazer essas análises no SQL?
Esses foram 5 exemplos de análises de dados comuns, mas como fazer isso no SQL?
Existe um jeito bem fácil e direto de fazer esses tipos de análise no SQL e, para isso, usamos as conhecidas (ou não tão conhecidas) FUNÇÕES DE JANELA.
As Funções de Janela, ou Window Functions, são um conjunto de funções do SQL que facilitam a nossa vida na criação das análises listadas anteriormente.
E como usar essas funções?
Esta pergunta será respondida na próxima aula, onde vou trazer exemplos práticos sobre essas funções!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Fala Impressionadores! Hoje eu quero te mostrar alguns exercícios de análise de dados no SQL!
A ideia é te mostrar a análise de dados, na prática, ou seja, vamos resolver alguns problemas utilizando o SQL.
Vamos ter 5 exercícios práticos de análise de dados no SQL para que você consiga praticar e entender como funciona na realidade.
Quais os passos têm que seguir, como verificar suas informações até chegar ao resultado.
E aí vamos aos exercícios práticos no SQL para que você possa treinar e ficar ainda mais eficiente utilizando a linguagem SQL?
Obs. Para os exercícios propostos estamos usando o banco de dados Contoso, neste banco de dados temos informações de vendas, clientes, produtos e muito mais.
Exercício 1
Você é responsável por controlar os dados de clientes e de produtos de sua empresa. O que você precisará fazer é confirmar se:
Dica – Sempre utilize o SELECT FROM “NOME DE UMA DAS TABELAS DO BANCO” para conhecer melhor as informações que estão disponíveis no banco de dados da sua empresa, quanto mais você conhecer do banco de dados mais rápida será sua resposta para pedidos de pesquisa e verificações, é importante ter essa curiosidade.
Respostas
Mas, para ter certeza de que não existe nenhuma coluna com um tipo de produto repetido, podemos fazer uma análise na coluna de ID e verificar se só existem valores únicos.
SELECT DISTINCT Productkey FROM DimProduct;
Rodando este código vamos ter uma lista com todos os valores distintos enumerados, vamos notar também que o valor total no canto inferior direito permanece 2.517. Portanto, este é realmente o número de produtos que temos.
SELECT * FROM DimCustomer
Verificando a tabela veremos que o total de linhas está em 18.869, ou seja, tivemos uma perda de clientes e este é um ponto que deve ser estudado para um possível plano de ação.
Exercício 2
Você trabalha no setor de marketing da empresa Contoso e acaba de ter uma ideia de oferecer descontos especiais para os clientes no dia de seus aniversários. Para isso, você vai precisar listar todos os clientes e as suas respectivas datas de nascimento, além de um contato.
Respostas:
SELECT * FROM DimCustomer;
SELECT Customerkey, FirstName, EmailAddress, BirthDate FROM DimCustomer;
O primeiro passo é organizar o código:
SELECT
Customerkey,
FirstName,
EmailAddress,
BirthDate
FROM DimCustomer;
O segundo passo é renomear usando o AS
SELECT
Customerkey AS ‘ID_Cliente’,
FirstName AS ‘Nome_Cliente’,
EmailAddress AS ‘Email_Cliente’,
BirthDate AS ‘Data_Nascimento’
FROM DimCustomer;
Feito isso as colunas podem ser selecionadas novamente e virão com os nomes modificados.
Exercício 3
A Contoso está comemorando seu aniversário de inauguração de 10 anos e pretende fazer uma ação de premiação para os clientes. A empresa quer presentear os primeiros clientes desde a inauguração.
Você foi alocado para levar adiante essa ação. Para isso, você terá que fazer o seguinte:
A Contoso decidiu presentear os primeiros 100 clientes da história com um vale compras de R$ 10.000. Utilize um comando em SQL para retornar uma tabela com os primeiros 100 clientes da tabela DimCustomer (selecione todas as colunas).
Resposta:
Observe que na tabela temos uma coluna com a data da primeira compra dos clientes, separar as primeiras 100 datas desta coluna é mais assertivo do que separar as primeiras 100 linhas da tabela de forma geral, por este motivo é importante investigar os dados antes de tentar solucionar as demandas.
Outro ponto é que a tabela pode estar desordenada, é necessário estabelecer uma ordem nas datas para ter certeza de estar separando as primeiras, para isso vamos usar o comando ORDER BY.
SELECT * FROM DimCustomer
ORDER BY DateFirstPurchase;
Após ordenar os valores note que a tabela está retornando diversos valores nulos, isso está acontecendo porque temos clientes de dois tipos, pessoas físicas e pessoas jurídicas.
É importante alinhar com quem solicitou os nomes dos clientes a serem premiados se esses clientes são clientes do tipo pessoa física ou jurídica para a partir desta informação prosseguir com sua análise.
Neste caso a empresa irá presentear as pessoas físicas, então vamos filtrar apenas as pessoas físicas.
SELECT * FROM DimCustomer
WHERE CustomerType = ‘Person’
ORDER BY DateFirstPurchase;
Para isso vamos utilizar um filtro que permite apenas o tipo Person, agora temos os primeiros clientes do tipo Person de forma ordenada sendo filtrados e já podemos selecionar os 100 primeiros clientes
SELECT TOP (100) * FROM DimCustomer
WHERE CustomerType = ‘Person’
ORDER BY DateFirstPurchase;
Exercício 4
A empresa Contoso precisa fazer contato com os fornecedores de produtos para repor o estoque. Você é da área de compras e precisa descobrir quem são esses fornecedores.
Utilize um comando em SQL para retornar apenas os nomes dos fornecedores da tabela DimProduct.
Resposta:
SELECT DISTINCT Manufacturer FROM DimProduct;
Utilizando o comando acima estamos selecionando os nomes dos fornecedores de maneira distinta sem repetição.
Exercício 5
Agora você precisa descobrir se existe algum produto registrado na base de produtos que ainda não tenha sido vendido. Tente chegar nessa informação.
Atenção, não precisamos saber qual é este produto, apenas se ele existe ou não.
Vamos selecionar primeiro todos os produtos que temos como fizemos anteriormente de forma distinta na tabela de produtos e vamos fazer o mesmo na tabela de vendas.
Se o valor encontrado na tabela de vendas for menor do que o encontrado na tabela produtos, então podemos dizer que alguns produtos nunca foram vendidos.
SELECT DISTINCT Productkey FROM DimProduct;
SELECT DISTINCT Productkey FROM FactSales;
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Fala Impressionadores! Hoje eu quero te mostrar mais alguns exercícios de análise de dados no SQL!
Na aula anterior eu já te mostrei alguns exercícios de SQL, mas hoje nós vamos abordar exercícios com o comando GROUP BY, que é um comando de agrupamento no SQL.
Vamos novamente ver problemas reais e como você interpreta isso para conseguir trazer o resultado desejado dentro do SQL.
Lembrando que as pessoas não vão falar para você fazer um GROUP BY, um JOIN ou algo do tipo, você vai ter que verificar o problema e com seus conhecimentos em SQL vai utilizar as ferramentas adequadas para esse problema específico.
E aí, vamos para mais exercícios práticos de análise de dados no SQL?
Então vem comigo que eu vou te mostrar o passo a passo de como resolver cada um deles.
Exercício 1
O time comercial precisa saber qual a proporção entre clientes pessoa física e clientes pessoa jurídica para dimensionar melhor a equipe de vendas B2C (vendas pra pessoas físicas) e B2B (vendas entre empresas – pessoa jurídica). Para isso, você precisará fazer um relatório que resuma o total de clientes PF e PJ. Como você faria?
Neste caso o primeiro passo é sempre o mesmo, você precisa ter curiosidade de explorar o banco de dados da sua empresa, pense em todas as vez que vão surgir demandas como esta, vai ser muito mais fácil se você já souber onde procurar a resposta…
No banco de dados Contoso, que é o que estamos usando, temos a tabela Customer que é a tabela de clientes, vamos selecionar esta tabela:
SELECT * FROM DimCustomer;
Olhando para os dados dessa tabela você vai identificar que existe uma coluna com os tipos de clientes, os clientes físicos estão identificados com o Person e os clientes jurídicos estão identificados como Company.
Agora podemos usar o GROUP BY para saber qual o tamanho dos grupos de CF e CJ, vamos selecionar a coluna onde temos essas informações e contar quantas linhas temos com cada tipo de cliente, o resultado vamos colocar em outra coluna chamada Total_Clientes.
SELECT
CustomerType,
COUNT(*) Total_Clientes
FROM DimCustomer
GROUP BY CustomerType
Como resultado vamos ter uma tabela resumida com as quantidades de clientes físicos e jurídicos:
Clientes físicos -> 18.484
Clientes jurídicos -> 385
Exercício 2
Agora você é um analista de dados que dá suporte a área de RH, você deverá preparar um relatório mostrando o total de funcionários para cada departamento, mas também subdividido por sexo.
Obs. Tome cuidado com essa análise!
Primeiro vamos descobrir qual é o total de funcionários por departamento, para isso vamos selecionar a tabela de funcionários:
SELECT * FROM DimEmployee;
Vamos verificar na tabela qual coluna usar na nossa análise, vamos usar a coluna que lista os nomes dos departamentos da empresa -> DepartmentName.
SELECT
DepartmentName,
COUNT(*) Total_Funcionarios
FROM DimEmployee
GROUP BY DepartmentName;
Como resultado vamos ter uma lista com uma coluna enumerando os setores da empresa e, ao lado de cada setor a quantidade de funcionários na coluna Total_Funcionarios.
Já resolvemos metade da questão agrupando por setor, mas temos que agrupar também por gênero, para fazer isso é simples, colocamos uma vírgula após DepartmentName e acrescentamos a coluna Gender (gênero).
SELECT
DepartmentName,
Gender,
COUNT(*) Total_Funcionarios
FROM DimEmployee
GROUP BY DepartmentName, Gender;
Nosso resultado agora vai ser os setores da empresa e quantos funcionários temos de cada gênero.
Um cuidado que devemos ter neste tipo de análise é que não consideramos se todos os funcionários analisados ainda estão trabalhando na empresa ou não.
Se você verificar bem a tabela de onde retiramos essas informações, vai notar que temos uma coluna com o status do funcionário, essa coluna indica se este funcionário continua na empresa ou não.
Este é um bom exemplo de que, não ter conhecimento sobre a organização do seu banco de dados pode gerar erros.
Na verdade, antes de fazer os agrupamentos é necessário filtrar considerando apenas os funcionários que possuem status atual (Current) na empresa. Dessa forma vamos conseguir o resultado real:
SELECT
DepartmentName,
Gender,
COUNT(*) Total_Funcionarios
FROM DimEmployee
WHERE Status = “Current”
GROUP BY DepartmentName, Gender;
Exercício 3
Você é responsável pelo time de produtos da empresa e precisa enviar um relatório de controle com o total de produtos para cada marca, só que o seu gestor quer apenas as marcas que possuem mais de 200 exemplares de produtos. Como você faria isso?
Começamos selecionando a planilha para verificar os dados:
SELECT * FROM DimProduct;
Temos uma coluna que corresponde a marca do produto, vamos primeiro descobrir quantos produtos possui cada marca:
SELECT
BrandName,
COUNT(*) Total_Produtos
FROM DimProduct
GROUP BY BrandName;
Feito isso, vamos obter uma lista com a quantidade de produtos por marca, precisamos separar agora somente as marcas que possuem mais de 200 produtos.
Para isso vamos usar o HAVING, com este comando faremos um filtro mesmo após ter feito o agrupamento:
SELECT
BrandName,
COUNT(*) Total_Produtos
FROM DimProduct
GROUP BY BrandName;
HAVING COUNT(*) >= 200;
Note que no exercício anterior usamos o WHERE para fazer o filtro, sempre vamos usar o WHERE para fazer o filtro antes do agrupamento e o HAVING para filtrar após o agrupamento.
Você conhece os desafios comuns para quem trabalha com banco de dados? Nesta aula vamos fazer alguns exercícios práticos.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala Impressionadores! Na aula de hoje eu quero passar 3 exercícios práticos de análises de dados com SQL!
Esses são exercícios para que você possa treinar de uma forma mais eficiente com exemplos simples, então a ideia é aprender como resolver problemas com SQL.
Isso é muito importante principalmente para que você tenha uma prática de como resolver problemas para se preparar para uma entrevista de emprego.
Para essa aula vou utilizar o SQL Server e o banco de dados Contoso. Lembrando que aqui no canal ensinamos como instalar esse SGBD assim como fazer o download dessa base de dados gratuita!
Então você pode obter tanto o SGBD quanto a base de dados de forma gratuita para poder praticar!
Exercício 1
Você é Analista de Customer Experience (Experiência do Cliente) e precisa criar um relatório com os 100 primeiros clientes na história da empresa. Esses clientes receberão uma placa em reconhecimento a confiança dada.
Obs. Você precisa levantar essa lista de clientes dentro do banco de dados, em 10 minutos, pois o seu gestor solicitou essa informação para apresentar em uma reunião.
Assim que essa demanda chega é natural que você tente descobrir em qual arquivo pode existir essa informação, e esse é um ponto importante, como um profissional que trabalha com bancos de dados você sempre deve ser curioso e atento as informações no banco de dados da sua empresa.
Se você se manter atualizado sobre o banco de dados, nessas situações já vai ter uma boa ideia de onde encontrar as informações que precisa.
Neste caso temos uma tabela de Customer (clientes), o primeiro passo é visualizar os valores desta tabela.
Para visualizar estamos usando o comando SELECT * FROM DimCustomer;
Agora temos que olhar para cada coluna desta tabela e verificar se alguma delas pode nos ajudar.
No final da tabela vamos ter uma coluna chamada DateFirstPurchase, que significa Data da primeira compra -> vamos selecionar as 100 primeiras compras desta coluna.
Para isso vamos usar o comando top(n) ou LIMIT 100.
SELECT TOP(100) * FROM DimCustomer; -> SQL Serve
SELECT * FROM DimCustomer LIMIT 100; -> MySQL
Selecione todas as linhas de código e execute, dessa forma vamos ver apenas 100 linhas, mas, essas são as 100 PRIMEIRAS compras?
É importante rever um resultado algumas vezes antes de entregar, se observar bem, vai notar que esta coluna está com as datas desordenadas, portanto separamos 100 clientes, mas não os 100 primeiros.
Para ordenar vamos usar o comando ORDER BY:
SELECT TOP(100) * FROM DimCustomer
ORDER BY DateFirstPurchase;
O resultado agora apareceu com diversos valores nulos (NULL) valores nulos não são o mesmo que zerados, são valores que não foram preenchidos.
Você deve se perguntar o porquê de tantos valores nulos, e então, vai notar que quando a tabela ordenou os valores, fez isso do menor para o maior, então os valores nulos ficaram em primeiro lugar.
Mais um ponto importante, note que o tipo de cliente na coluna CustomerType é o tipo Company, então estamos olhando para as primeiras empresas e não as primeiras pessoas físicas.
Neste momento você pode alinhar com o seu gestor se o que ele quer é premiar as 100 primeiras empresas ou as 100 primeiras pessoas físicas.
Neste exemplo vamos supor que o objetivo seja premiar os clientes do tipo pessoa física. Então, vamos continuar nossa seleção usando um filtro (WHERE), vamos filtrar todos os clientes que forem diferentes de ‘Company’.
SELECT TOP(100) * FROM DimCustomer
WHERE CustomerType <> ‘Company’
ORDER BY DateFirstPurchase;
Agora, sim, temos os 100 primeiros clientes físicos que demonstraram confiança na empresa, observe que durante o processo foi necessário não apenas conhecer os comandos, mas também ter senso crítico e comunicação.
Essas são qualidades essenciais para o mercado de trabalho, por este motivo fiz esse exercício detalhando mais o processo até a resposta, para você ver que não é difícil, mas sempre devemos ter atenção e senso crítico, além de revisar o resultado.
Exercício 2
Você é analista de produtos e precisa levantar algumas informações sobre os produtos, como:
Esse tipo de demanda que envolve cálculos é muito comum dentro do SQL.
O primeiro passo é selecionar a tabela de produtos:
Para fazer esses cálculos vamos utilizar as funções de agregação:
Exercício 3
Você agora é um Analista de RH da empresa e precisa saber a quantidade total de funcionários de cada departamento, pois o setor financeiro depende desse entendimento para dimensionar gastos para cada um dos departamentos, como bonificações, computadores e equipamentos de forma geral.
Utilize seus conhecimentos para dar suporte à área financeira.
A primeira pergunta a ser feita aqui é, existe uma tabela de funcionários no banco de dados da empresa? Neste caso temos a coluna DimEmployee.
O segundo passo é fazer um agrupamento desta coluna usando o comando GROUP BY por que queremos a quantidade de pessoas por setor:
SELECT
DepartmentName,
COUNT (DepartmentName)
FROM DimEmployee
GROUP BY DepartmentName
ORDER BY COUNT (DepartmentName) DESC;
Observem que a última linha de código não faz parte da solução, ela poderia não ter sido feita, mas é bom que você sempre tenha em mente entregar um pouco mais do que foi pedido, muitas vezes são esses detalhes que fazem toda a diferença.
Você já sentiu a necessidade de fazer exercícios práticos para testar seus conhecimentos? São exercícios práticos sobre análises comuns no dia a dia de quem trabalha com banco de dados.
Meu objetivo é mostrar que são análises simples e que, quanto mais você for curioso e conhecer sua base de dados mais fácil será para fazer as análises e resolver problemas.
Por último e não menos importante é mostrar a você a linha de raciocínio que vamos usar para resolver esses problemas que estou propondo. Acompanhe as aulas e as resoluções!
Eu fico por aqui! Espero que gostem! Abraço,
Para acessar outras publicações de SQL, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.