Este projeto contém uma série de exercícios básicos e intermediários em SQL, projetados para melhorar suas habilidades em manipulação de bancos de dados e execução de consultas SQL. Os exercícios cobrem tópicos como joins, triggers, views, funções de agregação e manipulação de strings, e são adequados para estudantes e profissionais em busca de prática.
Voltados à prática com quaisquer bases genéricas (pode precisar de alguma adaptação dependendo da fonte).
Palavras-chave: SQL; JOIN; WITH; VIEW; TRIGGER; HAVING; filtros; análise
- VSCode v1.90.2: Usado como editor de código.
- SQLite v0.14.1: Extensão do VSCode para trabalhar com bancos de dados SQLite.
- SQLite Online: Usada para criar os arquivos '.db'. Pode também ser usada como ferramenta alternativa para executar queries SQL diretamente no navegador.
-
README.md - Arquivo de texto que documenta o projeto
-
Base 1 - Base de dados simulada de registros escolares
-
Exercício 1 - Queries de resolução dos exercícios com a Base 1
-
Base 2 - Base de dados simulada de registros de uma empresa
-
Base 2 - Criação de tabelas - Arquivo para criação da Base 2
-
Base 2 - Preenchimento das tabelas 1 - Query para preenchimento da Base 2
-
Base 2 - Preenchimento das tabelas 2 - Arquivo para preenchimento da Base 2
-
Base 2 - Preenchimento das tabelas 3 - Arquivo para preenchimento da Base 2
-
Exercício 2 - Queries de resolução dos exercícios com Base 2
exercicios_SQL/
│
├── data/ # Pasta de dados
│ ├── processed/ # Dados brutos, como foram obtidos
│ └── raw/ # Dados processados
│
├── exercicio_1_alura_(base_1_escola).sql # Consulta SQL
├── exercicio_2_alura_(base_2_empresa).sql # Consulta SQL
└── README.md # Arquivo de documentação principal
-
a) Baixe os bancos de dados (.db) da pasta
data/processed
e abra-os usando o SQLite no VSCode ou em outra ferramenta de sua escolha. b) Ou baixe os arquivos de criação das bases da pastadata/raw
e as recrie. -
Abra os arquivos de query (.sql) e execute as consultas no banco de dados correspondente.
Objetivo: Praticar ordenação de registros com ORDER BY, agrupamento com GROUP BY, diferentes formas de filtragem usando com WHERE e HAVING, tranformações de texto com SUBSTR e "||" , operações com datas, validações e tranformações com CASE ,particionamento de consulta com WITH e interaçõa entre diferentes tabelas com LEFT JOIN.
-
Selecione os primeiros 5 registros da tabela clientes (Alunos), ordenando-os pelo nome em ordem crescente.
-
Encontre todos os produtos na tabela produtos (Disciplinas) que não têm uma descrição associada (suponha que a coluna de descrição possa ser nula).
-
iste os funcionários (Professores) cujo nome começa com 'A' e termina com 's' na tabela funcionarios.
-
Exiba o departamento (disciplina) e a média salarial dos funcionários (média de notas dos alunos nas disciplinas) em cada departamento na tabela funcionarios, agrupando por departamento, apenas para os departamentos cuja média salarial é superior a $5000 (5,0).
-
Selecione todos os clientes da tabela clientes (alunos) e concatene o primeiro e o último nome, além de calcular o comprimento total do nome completo.
-
Para cada venda (nota) na tabela vendas, exiba o ID da venda, a data da venda e a diferença em dias entre a data da venda e a data atual.
-
Selecione todos os itens da tabela pedidos (notas) e arredonde o preço total para o número inteiro mais próximo.
-
Converta a coluna data_string da tabela eventos (avaliações), que está em formato de texto (YYYY-MM-DD), para o tipo de data e selecione todos os eventos após '2023-01-01' ('2023-08-01').
-
Na tabela avaliações (Notas), classifique cada avaliação como 'Boa', 'Média', ou 'Ruim' com base na pontuação: 1-3 para 'Ruim', 4-7 para 'Média', e 8-10 para 'Boa'.
-
Retornar a média de Notas dos Alunos em história.
-
Retornar as informações dos alunos cujo Nome começa com 'A'.
-
Buscar apenas os alunos que fazem aniversário em fevereiro.
-
Realizar uma que calcula a idade dos Alunos.
-
Retornar se o aluno está ou não aprovado. Aluno é considerado aprovado se a sua nota foi igual ou maior que 6.
-
Retornar o nome do aluno que obteve a maior nota em cada disciplina.
-
Buscar o nome do professor e a turma que ele é orientador
-
Listar os Alunos e as disciplinas em que estão matriculados
Objetivo: Praticar mesclagem de tabelas com UNION ALL, mais tranformaçãoes de texto com SUBSTR e "||" , outros tipos de JOIN, consultas encapsuladas dentro de JOIN, criação de VIEW e TRIGGER.
-
Retornar tabela com todos os fornecedores e colaboradores e seus endereços
-
Identificar qual ou quais clientes fizeram compras às 9:30 em 22 de janeiro de 2023
-
Identificar qual ou quais clientes fizeram compras em janeiro
-
Quais produtos tem preços acima da média de preço dos produtos (duas soluções)
-
Identificar quais clientes fizeram algum pedido
-
Identificar itens sem pedidos no mês de outubro
-
Retorne o nome dos clientes que ainda não fizeram pedidos
-
Retorne o valor total dos pedidos
-
Construir um modelo de nota para as vendas
-
Retorne o nome de cada cliente e o valor total dos pedidos que cada um deles comprou
-
Com o auxílio de uma view faça uma query que retorne os dados de pedidos que estão em andamento
-
Contruir um TRIGGER para que o faturamento diário esteja sempre atualizado
-
Atualizar dados já existentes na base (novo preço para a lasanha e nova descrição para o croisssant de amêndoas)
-
Remover dados existentes (colaborador Pedro Almeida desligado, cliente Paulo Sousa que pediu exclusão dos dados)
-
Traga todos os dados da cliente Maria Silva.
-
Retorne todos os produtos onde o preço seja maior que 10 e menor que 15.
-
Busque o nome e cargo dos colaboradores que foram contratados entre 2022-01-01 e 2022-06-31.
-
Recupere o nome do cliente que fez o primeiro pedido.
-
Liste os produtos que nunca foram pedidos.
-
Recupere os nomes dos produtos que estão em menos de 15 pedidos.
-
Liste os produtos e o ID do pedido que foram realizados pelo cliente "Pedro Alves" ou pela cliente "Ana Rodrigues".
-
Recupere o nome e o ID do cliente que mais comprou em valor.