---
# System prepended metadata

title: ado ado ado é o banco de dados

---

***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;
```