Logo Passei Direto
Buscar

Exercícios SQL Server LojaFuncional

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

UNIVERSIDADE PAULISTA – UNIP 
CURSO: CIÊNCIA DA COMPUTAÇÃO – 3º E 4º SEMESTRE 
LISTA DE EXERCÍCIOS – FUNÇÕES CONDICIONAIS E DATAS (MICROSOFT SQL SERVER) 
Disciplina: Banco de Dados 
Professor: _______________________ 
Data: ____/____/2025 
 
Sorocaba – 2025 
 
Script Inicial – Banco LojaFuncional 
 
CREATE DATABASE LojaFuncional; 
GO 
USE LojaFuncional; 
GO 
 
CREATE TABLE Clientes ( 
 id_cliente INT PRIMARY KEY IDENTITY(1,1), 
 nome_cliente VARCHAR(100), 
 cidade VARCHAR(50), 
 limite_credito DECIMAL(10,2), 
 telefone VARCHAR(20) 
); 
GO 
 
CREATE TABLE Pedidos ( 
 id_pedido INT PRIMARY KEY IDENTITY(1,1), 
 id_cliente INT FOREIGN KEY REFERENCES Clientes(id_cliente), 
 data_pedido DATE, 
 valor_total DECIMAL(10,2) 
); 
GO 
 
INSERT INTO Clientes (nome_cliente, cidade, limite_credito, telefone) VALUES 
('Ana Silva', 'Sorocaba', 2000.00, '15-99999-1111'), 
('Bruno Costa', 'Votorantim', NULL, NULL), 
('Carla Dias', 'Itu', 5000.00, '15-97777-2222'), 
('Daniel Moreira', NULL, 1500.00, NULL), 
('Eduardo Lima', 'Sorocaba', 0.00, '15-91234-5678'); 
GO 
 
INSERT INTO Pedidos (id_cliente, data_pedido, valor_total) VALUES 
(1, '2025-01-10', 1500.00), 
(2, '2025-02-05', 250.00), 
(3, '2025-02-25', 4200.00), 
(4, '2025-03-10', 0.00), 
(5, '2025-03-15', 750.00); 
GO 
 
Exercícios (20 itens) 
Exercício 1 
Liste o nome e o limite de crédito de cada cliente, substituindo valores nulos por 0 usando 
COALESCE. 
Exercício 2 
Mostre o nome dos clientes e uma coluna indicando se possuem telefone cadastrado (Sim/Não) 
utilizando IIF. 
Exercício 3 
Exiba o nome dos clientes e o limite de crédito, substituindo limite igual a 0 por NULL usando 
NULLIF. 
Exercício 4 
Liste todos os clientes mostrando a cidade, substituindo NULL por 'Não Informada'. 
Exercício 5 
Mostre o nome do cliente e uma coluna chamada 'Status Crédito' classificando: acima de 3000 
'Excelente', entre 1000 e 3000 'Bom', abaixo de 1000 'Baixo' usando CASE. 
Exercício 6 
Exiba o nome do cliente e os dias desde o último pedido usando DATEDIFF, considerando a 
data mais recente de cada cliente. 
Exercício 7 
Mostre o nome do cliente, valor_total e uma coluna chamada 'Situação Pedido' com CASE: valor 
> 3000 = 'Alto', entre 500 e 3000 = 'Médio', menor = 'Baixo'. 
Exercício 8 
Exiba os pedidos realizados no mês atual usando MONTH e YEAR com GETDATE. 
Exercício 9 
Mostre o nome do cliente e a data do pedido, substituindo datas nulas por a data atual com 
COALESCE (use LEFT JOIN para trazer clientes sem pedido). 
Exercício 10 
Liste o nome do cliente e o valor_total, mostrando com IIF se o pedido foi maior que o limite de 
crédito (Sim/Não). Para limite nulo, considere 0. 
Exercício 11 
Exiba o nome e o limite dos clientes cujo limite é igual ao valor do pedido mais recente. Além 
disso, mostre a razão valor/limite usando NULLIF no divisor para evitar divisão por zero. 
Exercício 12 
Mostre o nome do cliente e uma coluna 'TipoCliente': se limite for nulo, 'Sem Cadastro'; se 0, 
'Bloqueado'; senão 'Ativo'. 
Exercício 13 
Liste todos os pedidos mostrando o mês por extenso (ex.: Janeiro, Fevereiro) usando CASE com 
MONTH(data_pedido). 
Exercício 14 
Mostre o nome do cliente e uma coluna 'Telefone Preferencial' substituindo NULL por 'Sem 
Telefone' com COALESCE. 
Exercício 15 
Calcule o tempo médio (em dias) entre pedidos por cliente e apresente a média geral; evite 
divisão por zero com NULLIF. 
Exercício 16 
Liste o nome do cliente e o número de meses desde o primeiro pedido até hoje (DATEDIFF). 
Exercício 17 
Mostre o nome do cliente e a comparação entre limite de crédito e valor do pedido: exiba 'Saldo 
Positivo' se limite ≥ valor, caso contrário 'Estourou o Limite'. 
Exercício 18 
Apresente todos os clientes que não fizeram pedido algum. 
Exercício 19 
Mostre o valor total dos pedidos agrupado por cidade do cliente, substituindo cidades nulas por 
'Indefinida'. 
Exercício 20 
Exiba os pedidos realizados há mais de 30 dias com a data e a diferença em dias em relação à 
data atual. 
 
Gabarito – Consultas SQL (Microsoft SQL Server) 
Exercício 1 
SELECT 
 nome_cliente, 
 COALESCE(limite_credito, 0) AS Limite 
FROM Clientes; 
Exercício 2 
SELECT 
 nome_cliente, 
 IIF(telefone IS NOT NULL, 'Sim', 'Não') AS PossuiTelefone 
FROM Clientes; 
Exercício 3 
SELECT 
 nome_cliente, 
 NULLIF(limite_credito, 0) AS Limite 
FROM Clientes; 
Exercício 4 
SELECT 
 nome_cliente, 
 COALESCE(cidade, 'Não Informada') AS Cidade 
FROM Clientes; 
Exercício 5 
SELECT 
 nome_cliente, 
 CASE 
 WHEN limite_credito > 3000 THEN 'Excelente' 
 WHEN limite_credito BETWEEN 1000 AND 3000 THEN 'Bom' 
 ELSE 'Baixo' 
 END AS Status_Credito 
FROM Clientes; 
Exercício 6 
SELECT 
 c.nome_cliente, 
 DATEDIFF(DAY, ult.ultima_data, GETDATE()) AS DiasDesdeUltimoPedido 
FROM Clientes c 
JOIN ( 
 SELECT id_cliente, MAX(data_pedido) AS ultima_data 
 FROM Pedidos 
 GROUP BY id_cliente 
) AS ult 
 ON c.id_cliente = ult.id_cliente; 
Exercício 7 
SELECT 
 c.nome_cliente, 
 p.valor_total, 
 CASE 
 WHEN p.valor_total > 3000 THEN 'Alto' 
 WHEN p.valor_total BETWEEN 500 AND 3000 THEN 'Médio' 
 ELSE 'Baixo' 
 END AS Situacao_Pedido 
FROM Pedidos p 
JOIN Clientes c 
 ON p.id_cliente = c.id_cliente; 
Exercício 8 
SELECT * 
FROM Pedidos 
WHERE MONTH(data_pedido) = MONTH(GETDATE()) 
 AND YEAR(data_pedido) = YEAR(GETDATE()); 
Exercício 9 
SELECT 
 c.nome_cliente, 
 COALESCE(p.data_pedido, GETDATE()) AS DataPedido 
FROM Clientes c 
LEFT JOIN Pedidos p 
 ON c.id_cliente = p.id_cliente; 
Exercício 10 
SELECT 
 c.nome_cliente, 
 p.valor_total, 
 IIF(p.valor_total > COALESCE(c.limite_credito,0), 'Sim', 'Não') AS PedidoMaiorQueLimite 
FROM Clientes c 
JOIN Pedidos p 
 ON c.id_cliente = p.id_cliente; 
Exercício 11 
WITH Ultimo AS ( 
 SELECT 
 id_cliente, 
 MAX(data_pedido) AS ultima_data 
 FROM Pedidos 
 GROUP BY id_cliente 
), 
PedidoMaisRecente AS ( 
 SELECT p.id_cliente, p.valor_total 
 FROM Pedidos p 
 JOIN Ultimo u 
 ON p.id_cliente = u.id_cliente 
 AND p.data_pedido = u.ultima_data 
) 
SELECT 
 c.nome_cliente, 
 c.limite_credito, 
 pmr.valor_total AS ValorMaisRecente, 
 pmr.valor_total / NULLIF(c.limite_credito, 0) AS Razao_Valor_por_Limite 
FROM Clientes c 
JOIN PedidoMaisRecente pmr 
 ON pmr.id_cliente = c.id_cliente 
WHERE c.limite_credito = pmr.valor_total; 
Exercício 12 
SELECT 
 nome_cliente, 
 CASE 
 WHEN limite_credito IS NULL THEN 'Sem Cadastro' 
 WHEN limite_credito = 0 THEN 'Bloqueado' 
 ELSE 'Ativo' 
 END AS TipoCliente 
FROM Clientes; 
Exercício 13 
SELECT 
 id_pedido, 
 CASE MONTH(data_pedido) 
 WHEN 1 THEN 'Janeiro' WHEN 2 THEN 'Fevereiro' 
 WHEN 3 THEN 'Março' WHEN 4 THEN 'Abril' 
 WHEN 5 THEN 'Maio' WHEN 6 THEN 'Junho' 
 WHEN 7 THEN 'Julho' WHEN 8 THEN 'Agosto' 
 WHEN 9 THEN 'Setembro' WHEN 10 THEN 'Outubro' 
 WHEN 11 THEN 'Novembro' ELSE 'Dezembro' 
 END AS MesExtenso 
FROM Pedidos; 
Exercício 14 
SELECT 
 nome_cliente, 
 COALESCE(telefone, 'Sem Telefone') AS TelefonePreferencial 
FROM Clientes; 
Exercício 15 
WITH Estat AS ( 
 SELECT 
 id_cliente, 
 MIN(data_pedido) AS primeiro, 
 MAX(data_pedido) AS ultimo, 
 COUNT(*) AS qtd 
 FROM Pedidos 
 GROUP BY id_cliente 
) 
SELECT 
 AVG(CAST(DATEDIFF(DAY, primeiro, ultimo) AS FLOAT) / NULLIF(qtd - 1, 0)) AS 
MediaDiasEntrePedidos 
FROM Estat; 
Exercício 16 
SELECT 
 c.nome_cliente, 
 DATEDIFF(MONTH, MIN(p.data_pedido), GETDATE()) AS MesesDesdePrimeiroPedido 
FROM Clientes c 
JOIN Pedidos p 
 ON c.id_cliente = p.id_cliente 
GROUP BY c.nome_cliente; 
Exercício 17 
SELECT 
 c.nome_cliente, 
 p.valor_total, 
 c.limite_credito, 
 IIF(COALESCE(c.limite_credito,0) >= p.valor_total, 'Saldo Positivo', 'Estourou o Limite') AS 
ComparacaoFROM Clientes c 
JOIN Pedidos p 
 ON c.id_cliente = p.id_cliente; 
Exercício 18 
SELECT * 
FROM Clientes c 
WHERE NOT EXISTS ( 
 SELECT 1 
 FROM Pedidos p 
 WHERE p.id_cliente = c.id_cliente 
); 
Exercício 19 
SELECT 
 COALESCE(c.cidade,'Indefinida') AS Cidade, 
 SUM(p.valor_total) AS TotalPedidos 
FROM Clientes c 
JOIN Pedidos p 
 ON c.id_cliente = p.id_cliente 
GROUP BY COALESCE(c.cidade,'Indefinida'); 
Exercício 20 
SELECT 
 id_pedido, 
 data_pedido, 
 DATEDIFF(DAY, data_pedido, GETDATE()) AS DiasPassados 
FROM Pedidos 
WHERE DATEDIFF(DAY, data_pedido, GETDATE()) > 30;

Mais conteúdos dessa disciplina