Abaixo estão 10 exercícios de SQL que abrangem uma variedade de tópicos, desde funções de agregação e string até operadores lógicos e cláusulas de filtragem. Esses exercícios são projetados para serem aplicados em um banco de dados genérico e podem precisar de ajustes para se adequarem a esquemas específicos.

  1. Selecione os primeiros 5 registros da tabela clientes, ordenando-os pelo nome em ordem crescente.

    SELECT * FROM Clientes
    ORDER BY primeiro_nome -- Por padrão, a ordem será crescente
    LIMIT 5;
    

    image.png

  2. Encontre todos os produtos na tabela produtos que não têm uma descrição associada (suponha que a coluna de descrição possa ser nula).

    SELECT * FROM Produtos
    WHERE descricao IS NULL;
    

    image.png

  3. Liste os funcionários cujo nome começa com 'A' e termina com 's' na tabela funcionarios.

    SELECT * FROM Funcionarios
    WHERE nome_funcionario
    LIKE 'A%s';
    

    image.png

  4. Exiba o departamento e a média salarial dos funcionários em cada departamento na tabela funcionarios, agrupando por departamento, apenas para os departamentos cuja média salarial é superior a $5000.

    SELECT departamento, AVG(salario) AS media_salario_departamento
    FROM Funcionarios
    GROUP BY departamento
    HAVING media_salario_departamento > 5000;
    

    image.png

  5. Selecione todos os clientes da tabela clientes e concatene o primeiro e o último nome, além de calcular o comprimento total do nome completo.

    SELECT CONCAT(primeiro_nome, ' ', ultimo_nome) AS nome_completo,
    	LENGTH(CONCAT(primeiro_nome, ' ', ultimo_nome)) AS tamanho_nome -- Pode-se tirar o espaço também
    FROM Clientes;
    

    image.png

  6. Para cada venda 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.

    SELECT *,
    	ROUND(JULIANDAY('now') - JULIANDAY(data_venda), 0) AS diferenca_dias
    FROM Vendas; -- Usa a data e a hora (pode causar diferença)
    
    SELECT *,
    	ROUND(JULIANDAY(CURRENT_DATE) - JULIANDAY(data_venda), 0) AS diferenca_dias
    FROM Vendas; -- Usa apenas a data
    

    image.png

  7. Selecione todos os itens da tabela pedidos e arredonde o preço total para o número inteiro mais próximo.

    SELECT id_pedido, id_cliente, quantidade, ROUND(preco_unitario, 0) preco_unitario_round, preco_total
    FROM Pedidos -- 'Atualiza' os números da coluna
    
    SELECT *,
    	ROUND(preco_unitario) AS preco_unitario_round
    FROM Pedidos -- 'Adiciona' uma nova coluna com os valores arredondados
    

    ‘Substituindo’ os valores da coluna

    ‘Substituindo’ os valores da coluna

    ‘Adicionando’ uma nova coluna

    ‘Adicionando’ uma nova coluna

  8. Converta a coluna data_string da tabela eventos, que está em formato de texto (YYYY-MM-DD), para o tipo de data e selecione todos os eventos após '2023-01-01'.

    SELECT id_evento, nome_evento,
    	STRFTIME('%Y-%m-%d', data_evento) AS data_evento_covertida
    FROM Eventos
    WHERE data_evento_covertida < '2024-01-01';
    

    image.png

  9. Na tabela avaliacoes, 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'.

    SELECT *,
    CASE
    WHEN pontuacao <= 3 THEN 'Ruim'
    WHEN pontuacao BETWEEN 4 AND 7 THEN 'Média'
    ELSE 'Boa'
    END AS classificacao_avaliacao
    FROM Avaliacoes 
    

    image.png

  10. Altere o nome da coluna data_nasc para data_nascimento na tabela funcionarios e selecione todos os funcionários que nasceram após '.

    ALTER TABLE Funcionarios
    RENAME COLUMN data_nasc TO data_nascimento;
    
    SELECT nome_funcionario, -- Nesse caso, o GPT deixou a data como TEXT
    	STRFTIME('%Y-%m-%d', data_nascimento) AS data_nascimento_convertida
    FROM Funcionarios
    WHERE data_nascimento_convertida > '1990-01-01';
    

    image.png


Atividade_3.db