---
# System prepended metadata

title: 'SESSION FOUR: Query or not to Query? QUERY!!!!'

---

# SESSION FOUR: Query or not to Query? QUERY!!!!
Author: Igor Lima Charles
N°: 18
Grade: INFOA

```sql=
-- DESAFIO 1
SELECT 	nm_categoria,
	   	nm_produto,
       	vl_preco
FROM 	tb_categoria	C
JOIN 	tb_produto		P
ON		C.id_categoria = P.id_categoria
ORDER
BY		C.nm_categoria,
		P.nm_produto;
        
-- DESAFIO 2
SELECT 	nm_categoria,
	   	nm_produto,
       	vl_preco,
        qtd_minima,
        qtd_disponivel
FROM 	tb_categoria	 C
JOIN 	tb_produto		 P
ON		C.id_categoria = P.id_categoria
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;
        
-- DESAFIO 3
SELECT 	nm_categoria,
	   	nm_produto,
       	vl_preco,
        qtd_minima,
        qtd_disponivel
FROM 	tb_categoria	 C
JOIN 	tb_produto		 P
ON		C.id_categoria = P.id_categoria
JOIN 	tb_estoque		 E
ON		E.id_produto =	 P.id_produto
WHERE 	C.nm_categoria LIKE '%%'
AND		P.nm_produto   LIKE '%%'
ORDER
BY		P.vl_preco DESC;

-- DESAFIO 4
SELECT nm_cliente,
	   ds_cpf,
       ds_endereco,
       nr_endereco,
       ds_cidade
FROM tb_cliente		C
JOIN tb_endereco	E
on C.id_endereco = E.id_endereco
WHERE C.nm_cliente LIKE '%%'
AND	  E.ds_cidade LIKE '%%'
ORDER
BY	  ds_cidade;

-- DESAFIO 5
SELECT dt_venda,
	   nm_cliente,
       ds_nota_fiscal,
       tp_forma_pagamento,
       ds_endereco,
       nr_endereco
FROM tb_venda		v
JOIN tb_cliente		c
ON v.id_cliente =	c.id_cliente
JOIN tb_endereco	e
ON	v.id_endereco_entrega = e.id_endereco
WHERE v.dt_venda
BETWEEN '2020-01-01' AND '2021-01-01'
ORDER
by id_venda;

-- DESAFIO 6
SELECT dt_venda,
	   nm_cliente,
       ds_nota_fiscal,
       tp_forma_pagamento,
       ds_endereco,
       nr_endereco
FROM tb_venda		v
JOIN tb_cliente		c
ON 	v.id_cliente =	c.id_cliente
JOIN tb_endereco	e
ON	v.id_endereco_entrega = e.id_endereco
WHERE c.nm_cliente LIKE '%%'
OR 	  v.ds_nota_fiscal LIKE '%%'
ORDER
by id_venda;

-- DESAFIO 7
SELECT dt_venda,
	   nm_cliente,
       ds_nota_fiscal,
       tp_forma_pagamento,
       ds_endereco,
       nr_endereco
FROM tb_venda		v
JOIN tb_cliente		c
ON 	v.id_cliente =	c.id_cliente
JOIN tb_endereco	e
ON	v.id_endereco_entrega = e.id_endereco
WHERE v.dt_venda
OR 	  e.ds_endereco
ORDER
by id_venda;

-- DESAFIO 8
SELECT V.id_venda,
	   V.dt_venda,
       C.nm_cliente,
       V.ds_nota_fiscal,
       E.ds_endereco,
       E.nr_endereco,
       P.nm_produto,
       Ct.nm_categoria,
       P.vl_preco
FROM   tb_venda			V
JOIN   tb_cliente		        C
ON     V.id_cliente = C.id_cliente
JOIN   tb_endereco  			E
ON	   E.id_endereco = C.id_endereco
JOIN   tb_venda_item			Vi
ON     Vi.id_venda_item = V.id_venda
JOIN   tb_produto			P
ON     P.id_produto = Vi.id_produto
JOIN   tb_categoria 			Ct
ON     Ct.id_categoria = P.id_categoria
WHERE  V.id_venda LIKE '%%'
AND    V.ds_nota_fiscal LIKE '%%'
ORDER
BY V.id_venda;

-- DESAFIO 9
SELECT V.id_venda,
	   V.dt_venda,
       C.nm_cliente,
       V.ds_nota_fiscal,
       E.ds_endereco,
       E.nr_endereco,
       P.nm_produto,
       Ct.nm_categoria,
       P.vl_preco
FROM   tb_venda			V
JOIN   tb_cliente		C
ON     V.id_cliente = C.id_cliente
JOIN   tb_endereco  	E
ON	   E.id_endereco = C.id_endereco
JOIN   tb_venda_item		Vi
ON     Vi.id_venda_item = V.id_venda
JOIN   tb_produto			P
ON     P.id_produto = Vi.id_produto
JOIN   tb_categoria 		Ct
ON     Ct.id_categoria = P.id_categoria
WHERE  V.dt_venda LIKE '%%'
ORDER
BY P.nm_produto;

-- Desafio 10
SELECT DISTINCT nm_produto,
				nm_categoria,
                vl_preco
FROM tb_produto			P
JOIN tb_categoria		C
ON   P.id_categoria = C.id_categoria
JOIN tb_venda_item      Vi
On   Vi.id_produto = P.id_produto
JOIN tb_venda			V
ON   V.id_venda  = Vi.id_venda
WHERE V.dt_venda Like '%%'
ORDER BY P.nm_produto;

-- DESAFIO 11
SELECT DISTINCT P.id_produto,
	   P.nm_produto,
	   C.nm_categoria,
       P.vl_preco
FROM tb_produto			P
JOIN tb_categoria		C
ON   P.id_categoria = C.id_categoria
WHERE P.id_produto
NOT IN (SELECT id_produto FROM tb_venda_item);

-- DESAFIO 12
SELECT
           C.id_categoria,
           C.nm_categoria,
           P.vl_preco
FROM   	   	tb_produto      P
RIGHT JOIN  tb_categoria    C
on     P.id_categoria = C.id_categoria;


-- Desafio 14
select id_venda,
       dt_venda,
       nm_cliente,
       ds_nota_fiscal,
       ds_endereco,
       nr_endereco,
       nm_categoria,
       nm_produto,
       vl_preco
  from tb_venda            v
  left join tb_cliente     c
    on c.id_cliente = v.id_cliente
  join tb_endereco         en
    on v.id_endereco = en.id_endereco
 where v.id_cliente is null
 order
    by v.id_venda;

-- Desafio 13
SELECT C.id_cliente,
 		C.nm_cliente,
        C.ds_cpf
FROM   tb_cliente  C
LEFT JOIN   tb_endereco E
ON     C.id_endereco = E.id_endereco
where E.id_endereco IS NULL;

-- Desafio 15
select v.id_venda,
		count (vi.id_venda_item)   qtd_items
  from tb_venda        v
  join tb_venda_item  vi on v.id_venda = vi.id_venda
 group
    by v.id_venda;

-- Desafio 16
select v.id_venda,
		count (vi.id_venda_item)  qtd_items ,
        sum (p.vl_preco) vl_total_vendas
  from tb_venda       v
  join tb_venda_item  vi on v.id_venda = vi.id_venda
  join tb_produto     p  on p.id_produto = vi.id_produto
 group
    by v.id_venda;

-- Desafio 17
select v.id_venda,
        v.dt_venda,
        c.nm_cliente,
		count (vi.id_venda_item)  qtd_items ,
        sum (p.vl_preco) vl_total_vendas
  from tb_venda       v
  join tb_venda_item  vi on v.id_venda = vi.id_venda
  join tb_produto     p  on p.id_produto = vi.id_produto
  join tb_cliente     c  on c.id_cliente = v.id_cliente
 where v.dt_venda between '2020-05-01' and '2021-12-31'
 group
    by v.id_venda,
       v.dt_venda,
       c.nm_cliente;

-- Desafio 18
select v.id_venda,
        v.dt_venda,
        c.nm_cliente,
		count (vi.id_venda_item)  qtd_items ,
        sum (p.vl_preco) vl_total_vendas
  from tb_venda       v
  join tb_venda_item  vi on v.id_venda = vi.id_venda
  join tb_produto     p  on p.id_produto = vi.id_produto
  join tb_cliente     c  on c.id_cliente = v.id_cliente
 where v.dt_venda between '2021-04-02' and '2021-04-28'
 group
    by v.id_venda,
       v.dt_venda,
       c.nm_cliente
having sum (p.vl_preco) > 1000;

-- Desafio 19
select e.ds_cidade,
		count (vi.id_venda_item)  qtd_vendas
  from tb_venda       v
  join tb_venda_item  vi on v.id_venda = vi.id_venda
  join tb_endereco    e  on v.id_endereco = e.id_endereco
 group
    by e.ds_cidade
 order 
    by count (vi.id_venda_item);
    
-- Desafio 20
select p.id_produto,
        p.nm_produto,
        c.nm_categoria,
        p.vl_preco,
		count (vi.id_venda_item)  qtd_vendas
  from tb_venda       v
  join tb_venda_item  vi on v.id_venda = vi.id_venda
  join tb_produto     p  on p.id_produto = vi.id_produto
  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;
```