# Final Session: It's all or nothing: Super Bônus | SQL
autor: Guilherme de Oliveira Ribeiro, 10, Info-D
## 1. Modelagem Catálogo Google Play
> Create script
```sql=
CREATE TABLE tb_Catalogo_GooglePlay (
id_GooglePlay int primary key auto_increment,
nm_Nome varchar (100),
ds_Genero varchar(100),
bt_Disponivel_AppleStore bool,
bt_Disponível_GooglePlay bool,
dt_Ultima_Atualização date,
ds_Tamanho varchar (100),
nm_Criador varchar (100),
vl_avaliacao decimal(15,2),
qtd_Total_Downloads varchar (100)
);
```
> Insert script
```sql=
INSERT INTO tb_Catalogo_GooglePlay (nm_Nome, ds_Genero, bt_Disponivel_AppleStore, bt_Disponível_GooglePlay, dt_Ultima_Atualização, ds_Tamanho, nm_Criador, vl_avaliacao, qtd_Total_Downloads)
VALUES ('Angry Birds', 'Jogos Arcade/Casual', true, false, '2021-3-31', '89 MB', 'Jaakko lisalo', 4.2, '100.000.00'),
('Pokémon GO', 'Jogos baseados em localização/rpg virtual', true, false, '2016-4-6', '30 MB', 'Niantic, Inc.', 4.1, '100.000.000'),
('Kwai', 'Reprodutor e editor de vídeos', true, true, '2020-3-10', '54 MB', 'Su Hua e Cheng Yixiao', 4.4, '100.000.000'),
('Netflix', 'Plataforma para ver filmes e séries', true, true, '2021-4-7', '18 MB', 'Reed Hastings e Marc Randolph', 4.4, '1.000.000.000'),
('Disney+', 'Plataforma para ver filmes e séries', true, true, '2021-3-28', '14 MB', 'Walt Disney Company', 4.3, '100.000.000'),
('Among us', 'Jogos casuais', true, true, '2021-4-12', '114 MB', 'InnerSloth', 3.4, '100.000.000'),
('8 Ball Pool', 'Jogos de esporte', true, true, '2021-4-12', '90 MB', 'Robert Small', 4.4, '500.000.000'),
('Mercado Livre', 'Apps de compras', true, true, '2021-3-25', '18 MB', 'Marcos Galperin', 4.8, '100.000.000'),
('Spotify', 'Música e podcasts', true, false, '2021-4-12', '28 MB', 'Daniel Ek e Martin Lorentzon', 4.4, '500.000.000'),
('Candy Crush Saga', 'Jogos casuais', true, true, '2021-4-9', '69 MB', 'King', 4.6, '1.000.000.000');
```
> Select script
```sql=
-- Selecionar somente os apps que começam com A ou I
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE nm_Nome LIKE 'A%'
OR nm_Nome LIKE 'I%';
-- Mostrar apps com avaliações entre 4 e 5
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE vl_avaliacao BETWEEN 4 AND 5;
-- Selecionar os apps disponíveis na google play e na play store
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE bt_Disponível_GooglePlay = true
AND bt_Disponivel_AppleStore = true;
-- Mostrar os apps que tenham menos de 100 MB de tamanho
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE ds_Tamanho < '100 MB';
-- Selecionar e ordenar por total de downloads
SELECT *
FROM tb_Catalogo_GooglePlay
ORDER
BY qtd_Total_Downloads;
-- Selecionar apps que começam com a letra A ou que tenham mais de 50 MB de tamanho
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE nm_Nome LIKE 'A%'
OR ds_Tamanho > '50 MB'
-- Ordenar por data da ultima atualização
SELECT *
FROM tb_Catalogo_GooglePlay
ORDER
BY dt_Ultima_Atualização
-- Selecionar jogos casuais
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE ds_Genero = 'Jogos casuais';
-- Selecionar todos os apps que tenham uma avaliação maior do que 4 e que estejam disponíveis na google play
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE vl_avaliacao > 4
AND bt_Disponível_GooglePlay = true;
-- Selecionar jogos com mais de 100.000.000 ou que tenham menos de 70 MB de tamanho
SELECT *
FROM tb_Catalogo_GooglePlay
WHERE qtd_Total_Downloads > '100.000.000'
OR ds_Tamanho < '70 MB';
```
## 2. Modelagem Catálogo Google Play
> Create script
```sql=
CREATE TABLE tb_Países (
id_Países int primary key auto_increment,
nm_Nome varchar (100),
nm_Sigla varchar (100),
qtd_População varchar (100),
qtd_Área varchar (100),
dt_Aniversário date,
qtd_PIB varchar(100),
nm_Continente varchar(100),
nm_Capital varchar (100),
nm_Idioma varchar (100)
);
```
> Insert script
```sql=
INSERT INTO tb_Países ( nm_Nome, nm_Sigla, qtd_População, qtd_Área, dt_Aniversário, qtd_PIB, nm_Continente, nm_Capital, nm_Idioma)
VALUES ( 'India', 'IN', '1.366 bilhão', '3.287.000 km²', '1950-1-26', '2.869 trilhões', 'Asia', 'Nova Delhi', 'Hindi/Inglês'),
('Rússia', 'RU', '144.4 milhões', '17.130.000 km²', '1945-5-9', '379.8 trilhão', 'Europa/Asia', 'Moscou', 'Russo'),
('Canadá', 'CA', '37.59 milhões', '9.985.000 km²', '1982-7-1', '1.736 trilhão', 'América do Norte', 'Ottawa', 'Francês/Inglês'),
('Inglaterra', 'ENG', '55.98 milhões', '130.279 km²', '1907-4-21', '2.744 trilhões', 'Europa', 'Londres', 'Inglês'),
('Espanha', 'ES', '46.94 milhões', '505.990 km²', '1492-10-12', '1.393 trilhão', 'Europa/África', 'Madrid', 'Espanhol'),
('Nova Zelândia', 'NZ', '4.917 milhões', '268.021 km²', '1907-9-26', '206.9 bilhões', 'Oceania', 'Wellington', 'Inglês/ Língua de sinais da nova zelândia'),
('França', 'FR', '67.06 milhões', '643.801 km²', '1824-11-28', '2.716 trilhões', 'Europa', 'Paris','Francês'),
('Alemanha', 'DE', '83.02 milhões', '357.386 km²', '1897-1-18', '3.861 trilhões', 'Europa', 'Berlim', 'Alemão'),
('China', 'CN', '1.398 bilhão', '9.597.000 km²', '1409-5-18', '14.34 trilhões', 'Ásia', 'Pequim', 'Mandarim'),
('Japão', 'JP', '126.3 milhões', '377.915 km²', '1390-8-12', '5.082 trilhões', 'Ásia', 'Tóquio', 'Japonês');
```
## 3. Modelagem Clube Futebol
> Create script
```sql=
CREATE TABLE tb_Clube_futebol (
id_Clube int primary key auto_increment,
dt_Fundação date,
nm_Nome_Clube varchar(100),
nm_Presidente varchar(100),
nm_Sigla varchar(100),
qtd_Total_títulos varchar(100),
nm_País varchar(100),
nm_Cidade varchar(100),
nm_Estádio varchar(100),
qtd_Capacidade_Estádio varchar(100)
);
```
> Insert script
```sql=
VALUES ('1912-4-30', 'América Futebol Clube (Belo Horizonte)
', ' Alencar da Silveira Júnior', 'AFC', 2, 'Brasil', 'Belo Horizonte', 'Arena Independência', '100.024'),
('1979-5-12', 'Sport Club Rio Grande', 'Johannes Minnemann', 'SCRG', 3, 'Brasil', 'Porto
Alegre', 'Estádio Beira-Rio', '110.21'),
('1913-6-29', 'Esporte Clube Juventude', 'Antonio Araujo de Freitas', 'ECJ', 4, 'Brasil',
'Rio Grande do Sul', 'Estádio Alfredo Jaconi', '109.34'),
('1945-8-31', 'Club Esporte Salvador', 'José da Silva Freitas', 'CES', 2, 'Brasil', 'Salvador',
'Complexo Esportivo Cultural Octávio Mangabeira', '108.122'),
('1906-7-9', 'Esporte Clube Ypiranga', 'Valdemar Filho', 'ECY', 10, 'Brasil', 'Ipiranga', '
Estádio Olímpico Colosso da Lagoa', '30.000'),
('1998-7-16', 'Associação Atlética Ponte Preta', 'Rodrigo Santana', 'AAPP', 18, 'Brasil',
'Campinas', 'Estádio Moisés Lucarelli', '115.780'),
('1980-6-14', 'Sport Center Club National', 'Carlos Eduardo Rodrigues', 'SCCN', 10,
'Brasil', 'São Paulo', 'Estádio Rungrado Primeiro de Maio', '114.000'),
('1902-07-21', 'Fluminense Football Club', 'Mário Bittencourt', 'FLU', 35, 'Brasil', 'Rio de
Janeiro', 'Maracanã', '78.639'),
('1905-5-13', 'Sport Club do Recife', 'Milton Bivar', 'SCF', 45, 'Brasil', 'Recife', 'Estádio
Adelmar da Costa Carvalho', '35.020'),
('1902-9-13', 'Esporte Clube Vitória', 'Paulo Carneiro', 'ECV', 48, 'Brasil', 'São Paulo',
'Estádio Manoel Barradas', '34.535');
```
> Insert script
```sql=
-- Mostrar clubes de futebol onde a capacidade do estádio seja maior ou igual a 100.000
SELECT *
FROM tb_Clube_futebol
WHERE qtd_Capacidade_Estádio >= '100.000'
-- Mostrar todas as cidades que começam com B ou S
SELECT *
FROM tb_Clube_futebol
WHERE nm_Cidade LIKE 'B%'
WHERE nm_Cidade LIKE 'S%';
-- Ordenar por total de títulos
SELECT *
FROM tb_Clube_futebol
ORDER
BY qtd_Total_títulos ASC;
-- Ordenar por data de fundação
SELECT *
FROM tb_Clube_futebol
ORDER
BY dt_Fundação DESC;
-- Selecionar onde a data de fundação tenha o numero do mes maior que o numero do dia
SELECT *
FROM tb_Clube_futebol
WHERE month(dt_Fundação) > day(dt_Fundação);
-- Selecionar onde a sigla comece com C ou S
SELECT *
FROM tb_Clube_futebol
WHERE nm_Sigla LIKE 'C%'
OR nm_Sigla LIKE 'S%';
-- Selecionar e ordenar os clubes fundados antes de 2005
SELECT *
FROM tb_Clube_futebol
WHERE dt_Fundação < '2005-01-01'
ORDER
BY dt_Fundação DESC;
-- Selecionar se o nome do presidente do clube começar com A ou se a Capacidade do estádio for maior do que 30.000
SELECT *
FROM tb_Clube_futebol
WHERE nm_Presidente LIKE 'A%'
OR qtd_Capacidade_Estádio > '30.000';
-- Selecionar por total de titulos e por data de fundação
SELECT *
FROM tb_Clube_futebol
WHERE qtd_Total_títulos > 20
AND dt_Fundação < '1930-3-18'
-- Selecionar clubes que começam com A ou E
SELECT *
FROM tb_Clube_futebol
WHERE nm_Nome_Clube LIKE 'A%'
OR nm_Nome_Clube LIKE 'E%';
```
## 4. Modelagem Música
> Create script
```sql=
CREATE TABLE tb_Musica (
id_Musica int primary key auto_increment,
nm_Nome varchar (100),
nm_Artista varchar (100),
nm_Album varchar (100),
ds_Genero varchar (100),
dt_Lançamento date,
qtd_Total_Views varchar (100),
qtd_Total_Likes varchar (100),
ds_Duração varchar (100)
);
```
> Insert script
```sql=
INSERT INTO tb_Musica (nm_Nome, nm_Artista, nm_Album, ds_Genero, dt_Lançamento, qtd_Total_Views, qtd_Total_Likes, ds_Duração)
VALUES ('Warriors', 'Imagine dragons', 'Smoke + Mirrors', 'Rock alternativo', '2014-9-18', '27.740.565', '326 mil', '2:51 min'),
('We are the heores of our time', 'DragonForce', 'Ultra Beatdown', '
Rock progressivo/Metal progressivo', '2008-10-15', '38.783.822', '338 mil', '3:10 min'),
('I found the love', 'Ed Sheeran', 'Talk That Talk', 'Pop/Romantica', '2011-9-22', '2.811.075.716', '15 mil', '4:39 min'),
('Hello darkness my old friend', ' Simon & Garfunkel, Garfunkel, Simon', 'Wednesday Morning, 3 A.M.', 'Folk', '1964-8-15', '20.351.625', '310 mil', '3:05 min'),
('Play with fire', 'Sam Tinnesz', 'Babel: The Ruins', 'Alternativa/Indie', '2016-11-1', '52.429.695', '618 mil', '2:59 min'),
('Careless whisper', 'George Michael', 'Careless Whisper', 'Pop', '1984-8-14', '687.508.093', '4,1 mil', '5:01 min'),
('Hopeful', 'Bars e Melody', '143', 'Pop/rap','2015-7-8', '139.312.842', '2,5 mil', '2:57 min'),
('Monster', 'Skillet', 'Awake', 'Metal progressivo', '2010-3-12', '344.985.367 ', '2,5 mil', '3:06 min'),
('Fight back', 'NEFFEX', 'Fight Back: The Collection', 'Hip-Hop/rap', '2018-11-13', '144.051.795', '2,3 mil', '3:16 min'),
('King', 'Lauren Aquilina', 'Fools', 'Pop', '2012-3-14', '9.956.610', '180 mil', '3:57 min');
```
> Select script
```sql=
-- Ordenar músicas lançadas antes de 2011
SELECT *
FROM tb_Musica
WHERE dt_Lançamento < '2010-12-31'
ORDER
BY dt_Lançamento ASC;
-- Selecionar e ordenar somente as musicas com mais de 30.000.000 views
SELECT *
FROM tb_Musica
WHERE qtd_Total_Views > '30.000.000'
ORDER
BY qtd_Total_Views DESC;
-- Mostrar as musicas que possuem mais de 300 mil vizualizações
SELECT *
FROM tb_Musica
WHERE qtd_Total_Likes > '300 mil'
-- Selecionar as musicas que começam com a letra W ou que tenham menos de 50 mil vizualizações
SELECT *
FROM tb_Musica
WHERE nm_Nome LIKE 'A%'
OR qtd_Total_Views < '50 mil';
-- Mostrar musicas que o nome do artista com a letra S ou que tenha mais de 400 mil likes
SELECT *
FROM tb_Musica
WHERE nm_Artista LIKE 'S%'
OR qtd_Total_Likes > '400 mil';
-- Selecionar e ordenar musicas do genero Pop pela data de lançamento
SELECT *
FROM tb_Musica
WHERE ds_Genero = 'Pop'
ORDER
BY dt_Lançamento DESC;
-- Selecionar musicas com mais de 10.000.000 vizualizações e com mais de 100 mil likes
SELECT *
FROM tb_Musica
WHERE qtd_Total_Views > '10.000.000'
AND qtd_Total_Likes > '100 mil'
-- Mostrar as musicas que começam com a letra C ou que tenham sido lançadas depois de 2005
SELECT *
FROM tb_Musica
WHERE nm_Nome LIKE 'C%'
OR dt_Lançamento > '2005-1-1'
-- Mostrar musicas com mais de 3 minutos de duração
SELECT *
FROM tb_Musica
WHERE ds_Duração > '3:00 min';
-- Selecionar musicas do genero rap ou que tenham mais de 120 mil likes
SELECT *
FROM tb_Musica
WHERE ds_Genero = 'rap'
OR qtd_Total_Likes > '120 mil';
```
## 5. Modelagem Concessionária
> Create script
```sql=
CREATE TABLE tb_Concessionária (
id_Concessaionária int primary key auto_increment,
nm_Modelo varchar (100),
nm_Marca varchar (100),
dt_Ano_de_Fabricação date,
dt_Ano_Modelo date,
bt_Possui_Direção_Hidráulica bool,
bt_Possui_Ar_Condicionado bool,
qtd_Kilometragem varchar (100),
vl_Preço decimal (15,3),
ds_Cor varchar (100)
);
```
> Insert script
```sql=
INSERT INTO tb_Concessionária (nm_Modelo, nm_Marca, dt_Ano_de_Fabricação, dt_Ano_Modelo, bt_Possui_Direção_Hidráulica, bt_Possui_Ar_Condicionado, qtd_Kilometragem, vl_Preço, ds_Cor)
VALUES ('Argo', 'Fiat', '2020-4-20', '2021-3-4', true, true, '377.523 km', 53.990, 'Prata'),
('Onix', 'Chervrolet', '2018-2-28', '2019-8-1', false, true, '35.046 km', 39.990, 'Cinza'),
('Civic', 'Honda', '2020-2-8', '2021-2-3', false, true, '4.000 km', 199.000, 'Vermelho'),
('Fiesta', 'Ford', '2015-4-7', '2016-5-17', true, true, '44.100 km', 42.500, 'Branco'),
('Edge', 'Ford', '2010-4-20', '2011-3-12', true, false, '80.000 km', 45.000, 'Preto'),
('Kicks', 'Nissan', '2020-2-10', '2020-3-8', false, true, '7.054 km', 89.990, 'Branco'),
('Palio', 'Fiat', '2009-10-8', '2010-2-3', true, true, '90.000
km', 18.500, 'Prata'),
('Honda', 'City', '2012-10-19', '2013-10-4', false, false, '84.659 km', 39.990, 'Vermelho'),
('Tracker', 'Chevrolet', '2020-4-10', '2021-3-12', true, true, '1.400 km', 129.900, 'Azul'),
('Siena', 'Fiat', '2009-12-15', '2010-3-28', true, false, '121.000 km', 18.500, 'Cinza');
```
> Select script
```sql=
-- Seleecionar apenas os carros da fiat
SELECT *
FROM tb_Concessionária
WHERE nm_Marca = 'Fiat';
-- Mostrar carros com Direção hidráulica e Ar condicionado
SELECT *
FROM tb_Concessionária
WHERE bt_Possui_Direção_Hidráulica = true
AND bt_Possui_Ar_Condicionado = true;
-- Selecionar apenas os carros vermelhos
SELECT *
FROM tb_Concessionária
WHERE ds_Cor = 'Vermelho';
-- Mostrar carros que custam menos de 50.000
SELECT *
FROM tb_Concessionária
WHERE vl_Preço < 50.000
-- Mostrar os carros que não posssuem direção hidráulica
SELECT *
FROM tb_Concessionária
WHERE bt_Possui_Direção_Hidráulica = false;
-- Selecionar os carros que o modelo começa com a letra C ou que sejam brancos
SELECT *
FROM tb_Concessionária
WHERE nm_Modelo LIKE 'C%'
OR ds_Cor = 'Branco'
-- Ordenar por data de fabricação
SELECT *
FROM tb_Concessionária
ORDER
BY dt_Ano_de_Fabricação DESC;
-- Mostrar carros que possuem Kilometragem menor que 50.000 km
SELECT *
FROM tb_Concessionária
WHERE qtd_Kilometragem < '50.000 km';
-- Mostrar carros da Chevrolet ou que tenham ar-condicionado
SELECT *
FROM tb_Concessionária
WHERE nm_Marca = 'Chevrolet'
OR bt_Possui_Ar_Condicionado = true;
-- Ordenar carros que custam mais de 40.000 pelo preço
SELECT *
FROM tb_Concessionária
WHERE vl_Preço > '40.000'
ORDER
BY vl_Preço;
```
## 6. Modelagem Computador
> Create script
```sql=
CREATE TABLE tb_Computador (
id_Computador int not null primary key auto_increment,
nm_Marca varchar(100),
nm_Processador varchar(100),
nm_Sistema_Operacional varchar(100),
ds_Memoria_RAM varchar(100),
ds_Armazenamento varchar(100),
ds_Tamanho varchar(100),
bt_Office bool not null
);
```
> Insert script
```sql=
INSERT INTO tb_Computador (nm_Marca, nm_Processador, nm_Sistema_Operacional, ds_Memoria_RAM, ds_Armazenamento, ds_Tamanho, bt_Office)
VALUES ('Positivo', 'Intel i5 3570K', 'Windows 8', '8 GB', '4tb', 'Altura: 390 mm, Largura: 420 mm', false),
('Samsung' , 'Intel Core i3-10110U', 'Windows 10 Home', '4 GB', '7tb', 'Altura: 400 mm, Largura: 470 mm', true),
('Lenovo', 'Intel® Celeron Dual Core N4020', 'Windows 10 Home', '4 GB', '8tb', 'Altura: 407 mm, Largura: 509 mm', true),
('Lenovo', 'Intel® Core™ i7-10750H', 'Windows 10 Home', '16 GB', '1TB', 'Altura: 380 mm, Largura: 450 mm', true),
('LG', 'Intel Celeron', 'Windows 10 Home', ' 4 GB', '2TB', 'Altura: 320 mm, Largura: 500 mm', true),
('Dell', ' Intel® Core™ i5-1135G7', 'Windows 10 Home', '8 GB', '3TB', 'Altura: 407 mm, Largura: 509 mm', false),
('Dell', 'Intel Core i5', 'Windows 10 Home', '8 GB', '4TB', 'Altura: 445 mm, Largura: 512 mm', false),
('Samsung', 'Intel Pentium G5420', 'Windows 10 Pro', '4 GB', '6TB','Altura: 480 mm, Largura: 507 mm', false),
('Acer', 'Intel® Core™ i7-9750H', 'Windows 10 Pro', '16 GB', '1TB', 'Altura: 361 mm, Largura: 229 mm', false),
('Lenovo', 'Intel Core i3-10100', 'Windows 10 Pro', '4 GB', '2TB', 'Altura: 345 mm, Largura: 240 mm', true);
```
> Select script
```sql=
-- Filtar pela Memoria RAM
SELECT *
FROM tb_Computador
WHERE ds_Memoria_RAM > 5;
-- Filtrar por marca
SELECT *
FROM tb_Computador
WHERE nm_Marca IN ('Samsung');
-- Filtrar por sistema ou se possui pacote office
SELECT *
FROM tb_Computador
WHERE nm_Sistema_Operacional = 'Windows 10 Home'
OR bt_Office = true;
-- Mostrar somente onde o nome do processdor possui a letra E
SELECT *
FROM tb_Computador
WHERE nm_Processador LIKE 'E%';
-- Ordenar por memória RAM
SELECT *
FROM tb_Computador
WHERE nm_Marca LIKE 'A%'
ORDER
BY ds_Memoria_RAM DESC;
-- Selecionar pc da Samsung ou Lenovo
SELECT *
FROM tb_Computador
WHERE nm_Marca = 'Samsung'
OR nm_Marca = 'Lenovo';
-- Selecionar computador que não possui pacote office ou que tenha 8 GB de memória RAM
SELECT *
FROM tb_Computador
WHERE bt_Office = false
OR ds_Memoria_RAM = '8 GB';
-- Selecionar se o armazenamento tiver mais que 2tb e se o sistema operacional for windows pro
SELECT *
FROM tb_Computador
WHERE ds_Armazenamento > '2tb'
AND nm_Sistema_Operacional = 'Windows 10 Pro';
-- Selecionar pc da Acer ou que possua pacote office
SELECT *
FROM tb_Computador
WHERE nm_Marca = 'Acer'
OR bt_Office = true;
```