├── REDME.md <- Documentação do projeto.
├── data
│ ├── BASE_OBJETIVOS.csv <- Dados brutos a serem normalizados.
│ └── BASE_VENDAS.csv <- Dados brutos a serem normalizados.
│
├── docs <- Diagrama em .png
│
│
├── sql_scripts
│ ├── normalization
│ ├── LOAD_OBJETIVO.sql <- Script de carregamento dos dados normalizados para tabela OBJETIVO.
│ ├── LOAD_VENDA.sql <- Script de carregamento dos dados normalizados para tabela VENDA.
│ ├── Normalizacao_CreateTempTABLES.sql <- Script para criação de tabela temporaria.
│ ├── Normalizacao_InsertCSVtoTempTABLE.sql <- Script para criação de tabela temporaria.
│ ├── Normalizacao_TempObjetivos-CD.sql <- Script para normalização com códigos relacionados.
│ └── Normalizacao_TempVendas-CD.sql <- Script para normalização com códigos relacionados.
│ ├── queries
│ └── 3_Perguntas.sql <- Perguntas a serem respondidas através dos dados.
│ └── setup
│ ├── 0_CreateDatabase.sql <- Script para criação do banco de dados.
│ ├── 1_CreateTable.sql <- Script para criação das tabelas relacionais.
│ └── 2_Insert.sql <- Inserção de dados.
│
Este repositório foi criado com o objetivo duplo de compartilhar as soluções desenvolvidas para os desafios propostos no processo seletivo da posição de Analista de Incentivos Pleno na HSL Tecnologia, bem como documentar o processo técnico de preparação dos dados.
O primeiro passo foi instalar e configurar o SQL Server na minha máquina e conectar ao DBeaver para manusear os dados.
O segundo passo deste projeto envolve a importação criteriosa de dados de arquivos CSV para tabelas temporárias no SQL Server.
Segue-se a etapa de normalização, onde os dados importados são reestruturados e otimizados.
Os scripts dessa etapa estão disponíveis na pasta sql_script\normalization
.
SCRIPTS
- 0_CreateDatabase.sql
- 1_CreateTable.sql
- 2_Insert.sql
- 3_Perguntas.sql
ARQUIVOS
- BASE_OBJETIVOS.csv
EAN
EQUIPE
VENDEDOR
JAN
FEV
MAR
ABR
MAI
JUN
JUL
AGO
SET
OUT
NOV
DEZ
- BASE_VENDAS.csv
EAN
EQUIPE
VENDEDOR
JAN
FEV
MAR
ABR
MAI
JUN
JUL
AGO
SET
OUT
NOV
DEZ
DATABASE
OBJETIVO
CD_VENDA
PRIMARY KEYCD_PRODUTO
FOREIGN KEYCD_EQUIPE
FOREIGN KEYCD_USUARIO
FOREIGN KEYDT_PERIODO
NR_QUANTIDADE
VENDA
CD_VENDA
PRIMARY KEYCD_PRODUTO
FOREIGN KEYCD_EQUIPE
FOREIGN KEYCD_USUARIO
FOREIGN KEYDT_PERIODO
NR_QUANTIDADE
PRODUTO
CD_PRODUTO
PRIMARY KEYNM_PRODUTO
EAN
EQUIPE
CD_EQUIPE
PRIMARY KEYNM_EQUIPE
CD_EMPRESA
FOREIGN KEY
EMPRESA
CD_EMPRESA
PRIMARY KEYNN_EMPRESA
USARIO
CD_USUARIO
PRIMARY KEYNM_USUARIO
EQUIPE_PRODUTO
CD_EQUIPE_PRODUTO
PRIMARY KEYCD_EQUIPE
FOREIGN KEYCD_PRODUTO
FOREIGN KEYNR_PESO
EMPRESA_PRODUTO
CD_EMPRESA_PRODUTO
PRIMARY KEYCD_EMPRESA
FOREIGN KEYCD_PRODUTO
FOREIGN KEY
EQUIPE_USUARIO
CD_EQUIPE_USUARIO
PRIMARY KEYCD_EQUIPE
FOREIGN KEYCD_USUARIO
FOREIGN KEY
USUARIO_EMPRESA
CD_EMPRESA_USUARIO
PRIMARY KEYCD_EMPRESA
FOREIGN KEYCD_USUARIO
FOREIGN KEY
-
Análise de Equipes e Produtos:
- Objetivo: Retornar as informações de "Nome da empresa", "Nome da equipe", "Nome do usuário" e "Quantidade de Produtos" associados ao usuário em sua respectiva equipe.
- Filtro: Produtos com peso maior que 10%.
- Ordenação: Por "Equipe" e "Usuário".
-
Produtos Mais Vendidos por Equipe:
- Objetivo: Retornar "Nome da equipe", "Nome do produto" e a "Quantidade de Produtos vendidos".
- Especificação: Apenas para os produtos mais vendidos em cada equipe.
-
Vendas e Ranking no Primeiro Semestre:
- Objetivo: Retornar "Nome da equipe", "Nome do produto", "Nome do usuário", "Quantidade de Produtos vendidos" e o "Ranking".
- Período: Apenas no 1º semestre (Janeiro a Junho).
-
Objetivos por Trimestre:
- Objetivo: Retornar "Nome da equipe", "Nome do usuário", "Nome do produto", "Nome do Trimestre" (ex.: "1º Trimestre") e a "média dos objetivos por trimestre".
- Ordenação: Por "Nome da equipe", "Nome do usuário", "Nome do produto" e "média dos objetivos por trimestre" (decrescente).
-
Cobertura de Vendas Mensal:
- Objetivo: Retornar "Mês", "Nome da equipe", "Nome do usuário", "Nome do produto", "Objetivo", "Venda" e a "Cobertura de atingimento da venda (venda/objetivo)".
- Especificação: Somente os menores atingimentos de cobertura para cada mês.
-
Desempenho de Vendas de Bactrim em Maio:
- Objetivo: Retornar "Nome do usuário", "Unidades de Produtos vendidos", "Objetivo", e o percentual do atingimento do objetivo no mês de Maio, para o produto Bactrim.
- Ordenação: Pela performance em ordem decrescente.
-
Vendas de Yasmin e Representatividade:
- Objetivo: Retornar "Nome do produto", a quantidade vendida de cada um e sua representatividade no total de vendas da usuária "Yasmin".
- Ordenação: Pela representatividade decrescente.
-
Crescimento Trimestral de Vendas:
- Objetivo: Retornar "Nome do usuário", "Nome do produto", a quantidade vendida no segundo trimestre, a quantidade vendida no terceiro trimestre e o crescimento percentual do segundo para o terceiro trimestre.
- Especificação: Apenas para os maiores e menores crescimentos.
-
Performance/Cobertura Mensal de Vendas:
- Objetivo: Retornar uma lista de performance/cobertura (Venda / Objetivo) de "Nome do usuário", "Nome do produto" para todos os meses e "Ano".
- Detalhes: Cobertura de cada mês em colunas separadas e com duas casas decimais.
- Filtro: Apenas para o time de Vendas.
-
Melhor Vendedor de Paracetamol no Último Trimestre:
- Objetivo: Identificar o "Nome do usuário" que foi o melhor vendedor de Paracetamol no último trimestre do ano.
- Empresa: Considerando todos os times da empresa ALPHALAB.
-
Pior Vendedor de Nimesulida no Primeiro Trimestre:
- Objetivo: Identificar o "Nome do usuário" que foi o pior vendedor de Nimesulida no primeiro trimestre do ano.
- Empresa: Considerando todos os times da empresa Labmais.
-
Melhor Vendedor de Meloxicam do Ano:
- Objetivo: Identificar o "Nome do usuário" que foi o melhor (cobertura) vendedor de Meloxicam neste ano.
- Empresa: Considerando todos os times da empresa ALPHALAB.
To do
- Configurar um servidor local SQL Server [completion:: 2024-01-28]
- Com os scripts fornecidos: [completion:: 2024-01-28]
- Criar DataBase (0_CreateDatabase.sql) [completion:: 2024-01-28]
- Criar Tabelas (1_CreateTable.sql) [completion:: 2024-01-28]
- Inserir Parâmetros (Insert.sql) nas Tabelas [completion:: 2024-01-28]
- Carregar .csv nas Tabelas [completion:: 2024-01-29]
- normalizar dos dados [completion:: 2024-01-29]
- mapear dados para normalizar [completion:: 2024-01-29]
- "Pivotar" tabela BASE_Objetivos de Horizontal p/ Vertical [completion:: 2024-01-29]
- "Pivotar" tabela BASE_Vendas de Horizontal p/ Vertical [completion:: 2024-01-29]
- JOIN para normalização para as chaves [completion:: 2024-01-29]
- Carregar Base para OBJETIVO [completion:: 2024-01-29]
- Carregar Base para VENDA [completion:: 2024-01-29]
- normalizar dos dados [completion:: 2024-01-29]
- Consultas do script 3_Perguntas.sql [completion:: 2024-01-30]
- Revisão das respostas/scripts [completion:: 2024-01-31]
- Documentação [completion:: 2024-01-30]
- Documentação da instalação do SQL Server [completion:: 2024-01-31]
- Revisão da Documentação [completion:: 2024-01-31]
- Revisar Estrutura do Repositório [completion:: 2024-01-31]
- Enviar para recrutador [completion:: 2024-01-31]