***NOME*** João Gabriel Camargo Ramos
***TURMA*** INFO C
***NUMERO*** 23
# ado ado ado é o banco de dados
## SELECTS: PARTE 1
```sql=
-- EXERCÍCIO 01
SELECT c.nm_categoria,
p.nm_produto,
p.vl_preco
FROM tb_categoria c
INNER JOIN tb_produto p ON p.id_categoria = c.id_categoria
WHERE c.nm_categoria = "Infantil"
ORDER
BY c.nm_categoria,
p.nm_produto;
-- EXERCÍCIO 02
SELECT c.nm_categoria,
p.nm_produto,
p.vl_preco,
e.qtd_minima,
e.qtd_disponivel
FROM tb_categoria c
INNER JOIN tb_produto p ON p.id_categoria = c.id_categoria
INNER JOIN tb_estoque e ON e.id_produto = p.id_produto
WHERE e.qtd_disponivel < e.qtd_minima
ORDER
BY c.nm_categoria,
p.nm_produto;
-- EXERCÍCIO 03
SELECT c.nm_categoria,
p.nm_produto,
p.vl_preco,
e.qtd_minima,
e.qtd_disponivel
FROM tb_categoria c
INNER JOIN tb_produto p ON p.id_categoria = c.id_categoria
INNER JOIN tb_estoque e ON e.id_produto = p.id_produto
WHERE c.nm_categoria NOT LIKE '%A%'
AND p.nm_produto LIKE 'B%'
ORDER
BY p.vl_preco DESC;
-- EXERCÍCIO 04
SELECT cl.nm_cliente,
cl.ds_cpf,
ed.ds_cep,
ed.ds_endereco,
ed.nr_endereco,
ed.ds_cidade
FROM tb_cliente cl
INNER JOIN tb_endereco ed ON ed.id_endereco = cl.id_endereco
WHERE cl.nm_cliente LIKE '%O%'
AND ed.ds_cidade = "Salvador"
ORDER
BY ed.ds_cidade;
-- EXERCÍCIO 05
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
v.ds_nota_fiscal,
v.tp_forma_pagamento,
ed.ds_endereco,
ed.nr_endereco
FROM tb_venda v
INNeR JOIN tb_cliente cl on cl.id_cliente = v.id_cliente
INNER JOIN tb_endereco ed ON ed.id_endereco = cl.id_endereco
WHERE v.dt_venda BETWEEN '2020-10-02' AND '2020-12-01'
ORDER
BY v.id_venda;
-- EXERCÍCIO 06
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
v.ds_nota_fiscal,
v.tp_forma_pagamento,
ed.ds_endereco,
ed.nr_endereco
FROM tb_venda v
inner join tb_cliente cl on cl.id_cliente = v.id_cliente
INNER JOIN tb_endereco ed ON ed.id_endereco = cl.id_endereco
WHERE cl.nm_cliente LIKE '%B%'
or v.ds_nota_fiscal like 'NF9%'
ORDER
BY v.id_venda;
-- EXERCÍCIO 07
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
v.ds_nota_fiscal,
v.tp_forma_pagamento,
ed.ds_endereco,
ed.nr_endereco
FROM tb_venda v
inner join tb_cliente cl on cl.id_cliente = v.id_cliente
INNER JOIN tb_endereco ed ON ed.id_endereco = cl.id_endereco
WHERE ed.ds_endereco LIKE '%E%'
AND v.dt_venda BETWEEN '2020-01-01' and '2020-03-01'
ORDER
BY v.id_venda;
-- EXERCÍCIO 08
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
v.ds_nota_fiscal,
ed.ds_endereco,
ed.nr_endereco,
p.nm_produto,
p.vl_preco
from tb_venda_item vi
INNER JOIN tb_venda v on v.id_venda = vi.id_venda_item
inner join tb_produto p on p.id_produto = vi.id_produto
inner join tb_endereco ed on v.id_endereco_entrega = ed.id_endereco
inner join tb_cliente cl on cl.id_cliente = v.id_cliente
inner join tb_categoria c on c.id_categoria = p.id_categoria
where v.id_venda > 50
OR v.ds_nota_fiscal like '%0'
ORDER
by v.id_venda;
-- EXERCÍCIO 09
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
v.ds_nota_fiscal,
ed.ds_endereco,
ed.nr_endereco,
p.nm_produto,
p.vl_preco
from tb_venda_item vi
INNER JOIN tb_venda v on v.id_venda = vi.id_venda_item
inner join tb_produto p on p.id_produto = vi.id_produto
inner join tb_cliente cl on cl.id_cliente = v.id_cliente
inner join tb_endereco ed on v.id_endereco_entrega = ed.id_endereco
inner join tb_categoria c on c.id_categoria = p.id_categoria
where v.dt_venda > '2021-01-01'
ORDER
by v.id_venda;
-- EXERCÍCIO 10
SELECT p.nm_produto,
c.nm_categoria,
p.vl_preco
FROM tb_venda_item vi
inner join tb_produto p on vi.id_produto = p.id_produto
inner join tb_venda v on v.id_venda = vi.id_venda
inner join tb_categoria c on p.id_categoria = c.id_categoria
where v.dt_venda > '2020-10-01'
GROUP
by p.nm_produto
order
by p.nm_produto;
```
## SELECTS: PARTE 2
```sql=
-- EXERCÍCIO 11
SELECT p.id_produto,
p.nm_produto,
c.nm_categoria,
p.vl_preco
FROM tb_produto p
inner join tb_categoria c on c.id_categoria = p.id_categoria
where p.id_produto not in (SELECT id_produto from tb_venda_item);
-- EXERCÍCIO 12
SELECT c.id_categoria,
c.nm_categoria
FROM tb_produto p
RIGHT JOIN tb_categoria c on c.id_categoria = p.id_categoria
WHERE p.id_produto is null;
-- EXERCÍCIO 13
SELECT cl.id_cliente,
cl.nm_cliente,
cl.ds_cpf
from tb_cliente cl
left join tb_endereco ed on ed.id_endereco = cl.id_endereco
where ed.ds_endereco is null;
-- EXERCÍCIO 14
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
v.ds_nota_fiscal,
ed.ds_endereco,
ed.nr_endereco,
p.nm_produto,
p.vl_preco
from tb_venda_item vi
INNER JOIN tb_venda v on v.id_venda = vi.id_venda_item
inner join tb_produto p on p.id_produto = vi.id_produto
left join tb_cliente cl on cl.id_cliente = v.id_cliente
inner join tb_endereco ed on v.id_endereco_entrega = ed.id_endereco
inner join tb_categoria c on c.id_categoria = p.id_categoria
where nm_cliente is null;
```
## SELECTS: PARTE III
```sql=
-- EXERCÍCIO 15
SELECT v.id_venda,
COUNT(vi.id_venda_item) as qtd_itens
FROM tb_venda_item vi
INNER join tb_venda v on v.id_venda = vi.id_venda
GROUP
BY v.id_venda;
-- EXERCÍCIO 16
SELECT v.id_venda,
COUNT(vi.id_venda_item) as qtd_itens,
SUM(p.vl_preco) as vl_total_venda
from tb_venda_item vi
inner join tb_venda v on v.id_venda = vi.id_venda
INNER JOIN tb_produto p ON p.id_produto = vi.id_produto
group
by v.id_venda;
-- EXERCÍCIO 17
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
COUNT(vi.id_venda_item) as qtd_itens,
SUM(p.vl_preco) as vl_total_venda
from tb_venda_item vi
inner JOIN tb_venda v on v.id_venda = vi.id_venda
inner join tb_produto p on p.id_produto = vi.id_produto
inner JOIN tb_cliente cl on cl.id_cliente = v.id_cliente
GROUP
by v.id_venda,
v.dt_venda,
cl.nm_cliente;
-- EXERCÍCIO 18
SELECT v.id_venda,
v.dt_venda,
cl.nm_cliente,
COUNT(vi.id_venda_item) as qtd_itens,
SUM(p.vl_preco) as vl_total_venda
from tb_venda_item vi
inner JOIN tb_venda v on v.id_venda = vi.id_venda
inner join tb_produto p on p.id_produto = vi.id_produto
inner JOIN tb_cliente cl on cl.id_cliente = v.id_cliente
GROUP
by v.id_venda,
v.dt_venda,
cl.nm_cliente
having SUM(p.vl_preco) > 1000;
-- EXERCÍCIO 19
SELECT ed.ds_cidade,
COUNT(vi.id_venda_item) as qtd_itens,
SUM(p.vl_preco) as vl_total_venda
from tb_venda_item vi
inner JOIN tb_venda v on v.id_venda = vi.id_venda
inner join tb_produto p on p.id_produto = vi.id_produto
inner JOIN tb_endereco ed on ed.id_endereco = v.id_endereco_entrega
GROUP
by ed.ds_cidade;
-- EXERCÍCIO 20
SELECT p.id_produto,
p.nm_produto,
c.nm_categoria,
p.vl_preco,
count(vi.id_venda_item) as qtd_vendas
from tb_venda_item vi
inner join tb_produto p on p.id_produto = vi.id_produto
inner join tb_categoria c on c.id_categoria = p.id_categoria
GROUP
BY p.id_produto,
p.nm_produto,
c.nm_categoria,
p.vl_preco
ORDER
BY COUNT(vi.id_venda_item) DESC;
```
## SELECTS: DESAFIO MONSTER
```sql=
-- DESAFIO MONSTER
SELECT id_rank,
cl.id_cliente,
cl.nm_cliente,
cl.ds_cpf,
count(vi.id_venda_item) as qtd_compras
from tb_venda_item vi
inner join tb_produto p on p.id_produto = vi.id_produto
inner join tb_categoria c on c.id_categoria = p.id_categoria
inner join tb_venda v on v.id_venda = vi.id_venda
inner join tb_cliente cl on cl.id_cliente = v.id_cliente
group
by cl.id_cliente,
cl.nm_cliente,
cl.ds_cpf
ORDER
by count(vi.id_venda_item) DESC
limit 5;
```