Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"screencastMode.onlyKeyboardShortcuts": true,
"terminal.integrated.fontSize": 18,
"window.zoomLevel": 3,
"workbench.activityBar.visible": true,
"workbench.colorTheme": "Visual Studio Dark",
"workbench.fontAliasing": "antialiased",
"workbench.statusBar.visible": true
Expand Down
Binary file modified chinook.db
Binary file not shown.
15 changes: 15 additions & 0 deletions exercicios/1-CRUD/1-criar-tabela.sql
Original file line number Diff line number Diff line change
@@ -1 +1,16 @@
-- Crie uma nova tabela no banco de dados
CREATE TABLE salario_classe (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nivel TEXT,
salario INTEGER
);


CREATE TABLE nova_salario_classe1 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nivel varchar(50),
salario REAL
);



11 changes: 11 additions & 0 deletions exercicios/1-CRUD/2-alterar-tabelas.sql
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
-- Na tabela salario_classe altere o atributo "nivel" para que seu tipo de dado seja varchar, com tamanho máximo de 50 caracteres
INSERT INTO nova_salario_classe (id,salario)
SELECT id,salario FROM salario_classe

DROP TABLE salario_classe

ALTER TABLE nova_salario_classe1 RENAME TO salario_classe

ALTER TABLE salario_classe
ADD COLUMN nivel varchar(50)

-- Na tabela employees, adicione uma coluna para receber o id_salario
ALTER TABLE employees
ADD id_salario INTEGER;
12 changes: 12 additions & 0 deletions exercicios/1-CRUD/3-inserir-dados.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
-- Insira 3 classes salariais na tabela salario_classe
INSERT INTO salario_classe (id,nivel,salario)
VALUES
(001, 'Estagiária', 3500.00),
(002, 'Junior', 4500.00),
(003, 'Senior', 6500.00);
-- Insira 1 nova classe salarial, sem declarar o atributo id_salario
INSERT INTO salario_classe (nivel,salario)
VALUES
('Especialista', 8000.00),
('Especialista 2', 9000.00);

SELECT id FROM salario_classe;


-- Insira 1 nova classe salarial, sem declarar o atributo id_salario
10 changes: 8 additions & 2 deletions exercicios/1-CRUD/4-consultar-dados.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
-- Crie uma consulta que retorne apenas as colunas "Name", "Composer" e "AlbumId" da tabela "tracks"


SELECT
Name,
GenreId,
Composer
FROM
tracks
-- Repita a consulta anterior e dessa vez filtre os registros para que retornem apenas as tracks com o atributo "AlbumId" igual a 1
WHERE
Name = 'Fast As a Shark';
12 changes: 10 additions & 2 deletions exercicios/1-CRUD/5-atualizar-dados.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
-- Atualize a classe salarial para a pessoa cujo EmployeeId é igual a 6. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe

UPDATE employees
SET id_salario = 3
WHERE EmployeeId = 6;

-- Atualize a classe salarial e o LastName da pessoa cujo EmployeeId é igual a 2. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe

UPDATE employees
SET id_salario = 4,
LastName = 'Silva'
WHERE EmployeeId = 2;

-- Atualize a classe salarial 1 para as pessoas cuja coluna id_salario continua NULL. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe
UPDATE employees
SET id_salario = 1
WHERE id_salario is NULL;
4 changes: 4 additions & 0 deletions exercicios/1-CRUD/6-remover-dados.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
-- Da tabela invoice, remova o invoice cujo o InvoiceID corresponda ao valor 33
DELETE FROM invoices
WHERE InvoiceID = 33;


-- Da tabela invoice, remova todos os invoices cujo o Total seja menor do que 1
DELETE FROM invoices
WHERE Total < 1;
25 changes: 22 additions & 3 deletions exercicios/2-construindo-consultas/1-operadores.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
-- Construa uma consulta para a tabela "invoice_items" que retorne apenas as colunas InvoiceId, TrackId e UnitPrice.

SELECT
TrackID,
UnitPrice
FROM
invoice_items;
-- Inclua nessa consulta mais três colunas, cada uma como resultado de uma operação aritmética diferente

SELECT
TrackID,
UnitPrice,
UnitPrice * 1.3,
UnitPrice + 2.11,
(UnitPrice + 2.11) % 2
FROM
invoice_items;
-- Incremente essa consulta utilizando a cláusula WHERE, a qual restringirá o resultado apenas para linhas cujo o InvoiceId seja maior do que 20 e menor ou igual a 30

SELECT
TrackID,
UnitPrice,
UnitPrice * 1.3,
UnitPrice + 2.11,
(UnitPrice + 2.11) % 2
FROM invoice_items
WHERE InvoiceId > 20
AND InvoiceId <= 30;
16 changes: 14 additions & 2 deletions exercicios/2-construindo-consultas/2-valores-unicos-alias.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
-- Para a tabela "customers" crie uma consulta que retorne apenas os valores únicos da coluna Country

SELECT DISTINCT
Country
FROM
customers;

-- Na consulta anterior, adicione a coluna Company para verificar as combinações únicas entre empresas e países

SELECT DISTINCT
Country,
Company
FROM
customers;

-- Nesta mesma consulta, atribua um alias com título em português para cada coluna
SELECT DISTINCT
Country AS pais,
Company AS empresa
FROM
customers;
12 changes: 11 additions & 1 deletion exercicios/2-construindo-consultas/3-condicional.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
-- Escreva uma consulta que retorne o nome por extenso dos estados brasileiros

SELECT DISTINCT
Country as pais,
State as estado_sigla,
CASE
WHEN State = 'SP' THEN 'São Paulo'
WHEN State = 'RJ' THEN 'Rio de Janeiro'
END AS estado
FROM
customers
WHERE
Country LIKE 'Brazil';
Original file line number Diff line number Diff line change
@@ -1,16 +1,60 @@
-- Crie uma consulta que retorne as colunas CustomerId, FirstName, LastName e Address das pessoas consumidoras brasileiras

SELECT DISTINCT
CustomerId as ID,
FirstName as Nome,
Lastname as Sobrenome,
Address as Endereço
FROM customers
WHERE
Country LIKE 'Brazil';

-- Na consulta anterior, converta o sobrenome para letras maiúsculas

SELECT DISTINCT
CustomerId as ID,
FirstName as Nome,
UPPER (Lastname) as Sobrenome,
Address as Endereço
FROM customers
WHERE
Country LIKE 'Brazil';

-- Na consulta anterior, converta o nome para letras minúsculas

SELECT DISTINCT
CustomerId as ID,
LOWER (FirstName) as Nome,
LastName as Sobrenome,
Address as Endereço
FROM customers
WHERE
Country LIKE 'Brazil';

-- Na consulta anterior, adicione uma coluna cujos os dados seja o resultado da concatenação das colunas de nome e sobrenome

SELECT DISTINCT
CustomerId as ID,
FirstName as Nome,
LastName as Sobrenome,
FirstName || ' ' || LastName as Nome_completo,
FROM customers
WHERE
Country LIKE 'Brazil';

-- Na consulta anterior, substitua "Av." por "Avenida" na coluna endereço

SELECT DISTINCT
CustomerId as ID,
FirstName as Nome,
Lastname as Sobrenome,
Address as Endereço,
REPLACE(Address, 'Av.','Avenida') as endereço
FROM customers
WHERE
Country LIKE 'Brazil';

-- Na consulta anterior, utilize o símbolo de coringa para construir padrões textuais
SELECT DISTINCT
CustomerId as ID,
FirstName as Nome,
Lastname as Sobrenome,
Address as Endereço
FROM customers
WHERE
Country LIKE 'Bra%';
11 changes: 11 additions & 0 deletions exercicios/2-construindo-consultas/5-funcoes-agregadoras.sql
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
-- Para a tabela "invoices", crie uma consulta que retorne o país e a soma das compras realizadas nele, bem como o valor da compra mínima e máxima, a quantidade de compras realizadas e o ticket médio de cada compra.
SELECT
BillingCountry as pais,
SUM (Total) as soma_compras,
COUNT (Total) as qnt_compras_realizadas,
MIN (Total) as menor_compra,
MAX (Total) as maior_compra,
ROUND (AVG (Total),2) as ticket_medio
FROM
invoices
WHERE
BillingCountry = 'Austria';
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
-- Crie uma consulta para realizar um left join com as tabelas "albums" e "artists"
SELECT *
FROM albums
LEFT JOIN artists ON albums.ArtistId = artists.ArtistId;
30 changes: 29 additions & 1 deletion exercicios/3-consultando-dados-varias-tabelas/2-join-e-with.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,32 @@
-- Crie uma consulta para realizar inner join com as tabelas "tracks", "albums" e "artists"

SELECT
tra.TrackId as id,
tra.Name as musica,
alb.Title as album,
art.Name as artista
FROM
tracks AS tra
INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId
INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId
WHERE
art.name LIKE '%Gil';

-- Refatore a consulta anterior usando a cláusula "with" e verifique o total de músicas existente na base de terminado artista, ex: Caetano Veloso
WITH musicas AS(
SELECT
tra.TrackId as id,
tra.Name as musica,
alb.Title as album,
art.Name as artista
FROM
tracks AS tra
INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId
INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId)

SELECT
artista,
COUNT(musica) as qnt_total_musicas
FROM
musicas
WHERE
artista LIKE 'Caetano%';
12 changes: 12 additions & 0 deletions exercicios/4-refinando-consulta/1-filtro.sql
Original file line number Diff line number Diff line change
@@ -1 +1,13 @@
-- Crie uma consulta para realizar inner join com as tabelas "tracks", "albums" e "artists". Além disso, apresente apenas as músicas do artista que contenha "Nação" no nome e título do álbum que não seja "Da Lama Ao Caos"
SELECT
tra.TrackId as id,
tra.Name as musica,
alb.Title as album,
art.Name as artista
FROM
tracks AS tra
INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId
INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId
WHERE
artista LIKE '%Nação%'
AND album NOT LIKE 'Da Lama Ao Caos';
29 changes: 27 additions & 2 deletions exercicios/4-refinando-consulta/2-group-by-e-having.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
-- Crie uma consulta usando as tabelas "invoices" e "customers" cujo o resultado seja o total de gastos por cliente

SELECT
cus.CustomerId as id_cliente,
cus.FirstName as nome,
SUM(inv.Total) as total_gasto
FROM
invoices AS inv
INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId
GROUP BY id_cliente;

-- Na consulta anterior, insira um filtro para que apresente apenas os clientes que gastaram mais de R$30

SELECT
cus.CustomerId as id_cliente,
cus.FirstName as nome,
SUM(inv.Total) as total_gasto
FROM
invoices AS inv
INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId
GROUP BY id_cliente
HAVING SUM(inv.Total) >= 40;

-- Na consulta anterior, insira uma coluna que informe a compra de maior valor feita por cada cliente
SELECT
cus.CustomerId as id_cliente,
cus.FirstName as nome,
MAX(inv.Total) as compra_maior_valor,
SUM(inv.Total) as total_gasto
FROM
invoices AS inv
INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId
GROUP BY id_cliente
HAVING SUM(inv.Total) >= 40;
29 changes: 27 additions & 2 deletions exercicios/4-refinando-consulta/3-ordenando-e-limitando.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
-- Desenvolva uma consulta para a tabela "customers" que retorne apenas 10 linhas

SELECT
CustomerId as id,
FirstName as nome,
Country as pais
FROM
customers
LIMIT 10;

-- Usando a consulta anterior, ordene a coluna "Country" de forma crescente e "FirstName" de forma decrescente

SELECT
CustomerId as id,
FirstName as nome,
Country as pais
FROM
customers
ORDER BY
pais ASC,
nome DESC
LIMIT 10;

-- Continue usando a consulta anterior, dessa vez retorne 10 resultados, no entando ignore as 3 primeiras linhas
SELECT
CustomerId as id,
FirstName as nome,
Country as pais
FROM
customers
ORDER BY
pais ASC,
nome DESC
LIMIT 10 OFFSET 3;
6 changes: 0 additions & 6 deletions gabaritos/1-CRUD/1-criar-tabela_resposta.sql

This file was deleted.

11 changes: 0 additions & 11 deletions gabaritos/1-CRUD/2-alterar-tabelas_resposta.sql

This file was deleted.

Loading