Skip to content

rfcabral00-code/Curso-SQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 Curso de SQL

Este repositório contém os materiais, exemplos práticos e exercícios desenvolvidos ao longo do curso de SQL, partindo dos conceitos básicos até tópicos avançados, com foco em análise e manipulação de dados em bancos relacionais.

🗓️ Dia 1 – Fundamentos de SQL

No primeiro dia de curso, foram apresentados os conceitos iniciais e a base necessária para escrita de consultas SQL.

📌 Conteúdos abordados

Introdução ao SQL e bancos de dados relacionais

Preparação do ambiente de desenvolvimento:

Configuração do VS Code

Estrutura básica de um script SQL

Primeiro comando: “Olá, mundo” em SQL

Comandos fundamentais:

SELECT

FROM

WHERE

Introdução às cláusulas SQL

Criação de novas colunas (colunas calculadas)

Exercícios de fixação para prática dos conceitos iniciais

🗓️ Dia 2 – Ordenação, Condicionais e Agregações

No segundo dia, o foco foi organizar resultados, criar lógicas condicionais e realizar contagens, habilidades essenciais para análise de dados.

🔹 ORDER BY

O comando ORDER BY é utilizado para ordenar os resultados de uma consulta.

Exemplo – Ordenação com filtro e múltiplos critérios SELECT * FROM clientes WHERE flTwitch = 1 ORDER BY DtCriacao ASC, QtdePontos DESC;

Lógica aplicada:

Filtra clientes com flTwitch = 1

Ordena pela data de criação (crescente)

Em seguida, pela quantidade de pontos (decrescente)

🔹 CASE WHEN

O CASE WHEN permite criar regras condicionais dentro das consultas SQL.

📌 Observações importantes:

Cada CASE cria uma nova coluna

Muito utilizado para classificação, segmentação e criação de flags

Classificação de clientes por faixa de pontos SELECT idCliente, QtdePontos, CASE WHEN QtdePontos <= 500 THEN 'Ponei' WHEN QtdePontos <= 1000 THEN 'Ponei Premium' WHEN QtdePontos <= 5000 THEN 'Mago Aprendiz' WHEN QtdePontos <= 10000 THEN 'Mago Mestre' ELSE 'Mago Supremo' END AS NomeGrupo,

   CASE
        WHEN QtdePontos <= 1000 THEN 1
        ELSE 0
   END AS flPonei,

   CASE
        WHEN QtdePontos > 1000 THEN 1
        ELSE 0
   END AS flMago

FROM clientes WHERE flMago = 1 ORDER BY QtdePontos DESC;

🧠 Exercício – CASE WHEN

Classificação das transações por nível de pontos:

SELECT *, CASE WHEN QtdePontos < 10 THEN 'baixo' WHEN QtdePontos < 500 THEN 'médio' ELSE 'alto' END AS Nivel FROM transacoes;

🔹 COUNT

O COUNT é uma função de agregação utilizada para contar registros em uma tabela ou resultado de consulta.

Exemplo visto em aula SELECT COUNT(*), COUNT(1), COUNT(idCliente) FROM clientes;

Diferença entre os tipos de COUNT

COUNT(*)

Conta todas as linhas

Inclui registros com valores NULL

Forma mais comum e recomendada

COUNT(1)

Também conta todas as linhas

Equivalente ao COUNT(*) em bancos modernos

COUNT(idCliente)

Conta apenas registros onde idCliente não é NULL

Útil quando a coluna pode conter valores nulos

📌 Se idCliente for chave primária, todos os COUNT retornam o mesmo valor.

🗓️ Dia 3 – Agregações, DISTINCT e COUNT DISTINCT

Nesta aula foram apresentados conceitos fundamentais para resumir, deduplicar e analisar dados, utilizando funções de agregação e o operador DISTINCT.

🔹 DISTINCT e COUNT DISTINCT

O DISTINCT é utilizado para eliminar duplicidades, considerando a combinação das colunas selecionadas.

Contagem de registros distintos em um período SELECT COUNT(*) AS totalRegistros, COUNT(DISTINCT IdTransacao) AS transacoesDistintas, COUNT(DISTINCT idCliente) AS clientesDistintos FROM transacoes WHERE DtCriacao >= '2025-07-01' AND DtCriacao < '2025-08-01';

O que está sendo analisado:

Total de registros no período

Total de transações únicas

Total de clientes únicos

📌 Observação importante: DISTINCT atua sobre a coluna informada ou sobre a combinação de colunas da query, eliminando duplicidades com base nisso.

DISTINCT aplicado diretamente na contagem de clientes SELECT COUNT(DISTINCT idCliente) AS clientesDistintos FROM clientes;

👉 Retorna o número de clientes únicos existentes na tabela.

🔹 Agregações com SUM e CASE WHEN

As funções de agregação permitem “espremer” uma tabela, resumindo grandes volumes de dados em métricas relevantes.

Exemplo – Análise de pontos no período SELECT SUM(qtdePontos) AS qtdePontosTotal,

SUM(CASE
        WHEN qtdePontos > 0 THEN qtdePontos
    END) AS qtdePontosPositivos,

SUM(CASE
        WHEN qtdePontos < 0 THEN qtdePontos
    END) AS qtdePontosNegativos,

COUNT(CASE
          WHEN qtdePontos < 0 THEN 1
      END) AS qtdeTransacoesNegativas

FROM transacoes WHERE DtCriacao >= '2025-07-01' AND DtCriacao < '2025-08-01';

O que foi feito:

Soma total de pontos

Soma apenas de pontos positivos

Soma apenas de pontos negativos

Contagem de transações negativas

📌 Uso combinado de CASE WHEN + agregações, padrão muito comum em análises reais.

🔹 AVG, MIN, MAX e ROUND

Além de somar e contar, também foram utilizadas funções para análise estatística básica.

SELECT ROUND(AVG(qtdePontos), 2) AS mediaCarteira, ROUND(1.0 * SUM(qtdePontos) / COUNT(idCliente), 2) AS mediaCarteiraRoots, MIN(qtdePontos) AS minCarteira, MAX(qtdePontos) AS maxCarteira, SUM(flTwitch) AS totalTwitch, SUM(flEmail) AS totalEmail FROM clientes;

Pontos importantes da aula

ROUND(valor, 2) → define quantidade de casas decimais

Multiplicar por 1.0 força o cálculo para float, evitando divisão inteira

MIN e MAX retornam extremos do conjunto

SUM(flTwitch) funciona como contagem quando a coluna é 0/1

🧠 Conexão com próximos temas

Aula 4 - Group By e Having

Esses conceitos são a base direta para:

Métricas por cliente, produto ou período

Dashboards e relatórios analíticos

Projetos de dados reais

Conteúdo das próximas aulas:

GROUP BY → HAVING → JOIN → CTE → WINDOW FUNCTIONS

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published