---
# System prepended metadata

title: Banco de Dados Session Four

---

# Banco de Dados Session Four
## Query or not to Query? QUERY!!!!
autor: Guilherme Oliveira Verissimo
turma: InfoC
número: 21

[toc]

### Desafios

### Select Script

### PARTE I 

### DESAFIO 1
```sql=
SELECT nm_categoria, 
       nm_produto, 
       vl_preco
  FROM TB_PRODUTO		P
  JOIN TB_CATEGORIA 	C
	ON P.ID_CATEGORIA  	= C.ID_CATEGORIA
 WHERE C.NM_CATEGORIA = "Mouse Gamer"
 ORDER 
    BY nm_categoria,
       nm_produto;
```

### DESAFIO 2
```sql=
SELECT nm_categoria, 
       nm_produto, 
       vl_preco,
       qtd_minima,
       qtd_disponivel
  FROM TB_PRODUTO		P
  JOIN TB_CATEGORIA 	C
	ON P.ID_CATEGORIA  	= C.ID_CATEGORIA
  JOIN TB_ESTOQUE		E 
  	ON E.ID_PRODUTO = P.ID_PRODUTO
 WHERE E.QTD_DISPONIVEL <  E.QTD_MINIMA
 ORDER 
    BY nm_categoria,
       nm_produto;
```

### DESAFIO 3
```sql=
SELECT nm_categoria, 
       nm_produto, 
       vl_preco,
       qtd_minima,
       qtd_disponivel
  FROM TB_PRODUTO		P
  JOIN TB_CATEGORIA 	C
	ON P.ID_CATEGORIA  	= C.ID_CATEGORIA
  JOIN TB_ESTOQUE		E 
  	ON E.ID_PRODUTO = P.ID_PRODUTO
 WHERE C.NM_CATEGORIA LIKE "%T%"
   AND P.NM_PRODUTO LIKE "%O%"
 ORDER 
    BY vl_preco DESC;
```

### DESAFIO 4
```sql=
SELECT nm_cliente, 
	   ds_cpf, 
       ds_cep, 
       ds_endereco, 
       nr_endereco,
       ds_cidade
  FROM TB_CLIENTE		CL
  JOIN TB_ENDERECO		EN
  	ON CL.ID_ENDERECO   = EN.ID_ENDERECO 
 WHERE nm_cliente LIKE "%A%"
   AND ds_endereco LIKE "%Rua%"
 ORDER
 	BY ds_cidade;
```

### DESAFIO 5
```sql=
SELECT id_venda, 
	   dt_venda, 
       nm_cliente, 
       ds_nota_fiscal, 
       tp_forma_pagamento, 
       ds_endereco, 
       nr_endereco
  FROM TB_VENDA				   V
  JOIN TB_CLIENTE		   	   CL
    ON V.ID_CLIENTE	 	       = CL.ID_CLIENTE
  JOIN TB_ENDERECO			   EN	
  	ON V.ID_ENDERECO_ENTREGA = EN.ID_ENDERECO
 WHERE V.DT_VENDA BETWEEN "2021-03-18" AND "2021-04-01"
 ORDER
 	BY id_venda;
```

### DESAFIO 6
```sql=
SELECT id_venda, 
	   dt_venda, 
       nm_cliente, 
       ds_nota_fiscal, 
       tp_forma_pagamento, 
       ds_endereco, 
       nr_endereco
  FROM TB_VENDA				   V
  JOIN TB_CLIENTE		   	   CL
    ON V.ID_CLIENTE	 	       = CL.ID_CLIENTE
  JOIN TB_ENDERECO			   EN	
  	ON V.ID_ENDERECO_ENTREGA = EN.ID_ENDERECO
 WHERE CL.NM_CLIENTE LIKE "%Pedro%"
    or V.DS_NOTA_FISCAL = 101113642
 ORDER
 	BY id_venda;
```

### DESAFIO 7
```sql=
SELECT id_venda, 
	   dt_venda, 
       nm_cliente, 
       ds_nota_fiscal, 
       tp_forma_pagamento, 
       ds_endereco, 
       nr_endereco
  FROM TB_VENDA				   V
  JOIN TB_CLIENTE		   	   CL
    ON V.ID_CLIENTE	 	       = CL.ID_CLIENTE
  JOIN TB_ENDERECO			   EN	
  	ON V.ID_ENDERECO_ENTREGA   = EN.ID_ENDERECO
 WHERE V.DT_VENDA              = "2021-03-20"
   AND EN.DS_ENDERECO 		   LIKE "%Rua%"
 ORDER
 	BY id_venda;
```

### DESAFIO 8
```sql=
SELECT V.ID_VENDA,
       V.DT_VENDA,
       CL.NM_CLIENTE,
       V.DS_NOTA_FISCAL,
       EN.DS_ENDERECO,
       EN.NR_ENDERECO,
       P.NM_PRODUTO,
       C.ID_CATEGORIA,
       P.VL_PRECO
  FROM TB_VENDA				   V
  JOIN TB_CLIENTE		   	   CL
    ON V.ID_CLIENTE	 	       = CL.ID_CLIENTE
  JOIN TB_ENDERECO			   EN	
  	ON EN.ID_ENDERECO          = V.ID_ENDERECO_ENTREGA
  JOIN TB_VENDA_ITEM		   VI 
  	on VI.ID_VENDA			   = V.ID_VENDA
  JOIN TB_PRODUTO			   P 
  	on P.ID_PRODUTO			   = VI.ID_PRODUTO
  JOIN TB_CATEGORIA			   C 
  	on C.ID_CATEGORIA		   = P.ID_CATEGORIA
  JOIN TB_ESTOQUE			   E 
  	ON E.ID_PRODUTO			   = P.ID_PRODUTO
 WHERE V.ID_VENDA 	   	       = 1
 	OR V.DS_NOTA_FISCAL 	   = 796516422
 ORDEr
 	BY id_venda;
```

### DESAFIO 9
```sql=
SELECT V.ID_VENDA,
       V.DT_VENDA,
       CL.NM_CLIENTE,
       V.DS_NOTA_FISCAL,
       EN.DS_ENDERECO,
       EN.NR_ENDERECO,
       P.NM_PRODUTO,
       C.ID_CATEGORIA,
       P.VL_PRECO
  FROM TB_VENDA				   V
  JOIN TB_CLIENTE		   	   CL
    ON V.ID_CLIENTE	 	       = CL.ID_CLIENTE
  JOIN TB_ENDERECO			   EN	
  	ON EN.ID_ENDERECO          = V.ID_ENDERECO_ENTREGA
  JOIN TB_VENDA_ITEM		   VI 
  	on VI.ID_VENDA			   = V.ID_VENDA
  JOIN TB_PRODUTO			   P 
  	on P.ID_PRODUTO			   = VI.ID_PRODUTO
  JOIN TB_CATEGORIA			   C 
  	on C.ID_CATEGORIA		   = P.ID_CATEGORIA
  JOIN TB_ESTOQUE			   E 
  	ON E.ID_PRODUTO			   = P.ID_PRODUTO
 WHERE V.DT_VENDA			   = "2021-03-01"
 ORDEr
 	BY id_venda;
```

### DESAFIO 10
```sql=
SELECT nm_produto,
	   nm_categoria,
       vl_preco
  FROM TB_VENDA			V 
  JOIN TB_VENDA_ITEM    VI 
  	ON VI.ID_VENDA      = V.ID_VENDA
  JOIN TB_PRODUTO		P 
  	on P.ID_PRODUTO     = VI.ID_PRODUTO
  JOIN TB_CATEGORIA     C 
  	on C.ID_CATEGORIA   = P.ID_CATEGORIA
 WHERE V.DT_VENDA       = "2021-03-02"
 ORDER
    BY nm_produto;
```

### PARTE II 

### DESAFIO 11
```sql=
SELECT nm_produto,
	   nm_categoria,
       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
```sql=
SELECT P.ID_CATEGORIA,
       C.NM_CATEGORIA
  FROM TB_PRODUTO 			P 
  RIGHT JOIN TB_CATEGORIA   C 
  	ON P.ID_CATEGORIA       = C.ID_CATEGORIA
 WHERE P.ID_PRODUTO IS NULL;
 WHERE C.ID_ENDERECO is NULL;
```

### DESAFIO 13
```sql=
SELECT id_cliente,
	   nm_cliente
  FROM TB_CLIENTE		C 
  left JOIN TB_ENDERECO E 
    ON C.ID_ENDERECO    = E.ID_ENDERECO
 WHERE C.ID_ENDERECO is NULL;
```

### DESAFIO 14
```sql=
SELECT V.ID_VENDA,
       V.DT_VENDA,
       CL.NM_CLIENTE,
       V.DS_NOTA_FISCAL,
       EN.DS_ENDERECO,
       EN.NR_ENDERECO,
       P.NM_PRODUTO,
       C.ID_CATEGORIA,
       P.VL_PRECO
  FROM TB_VENDA				   V
  JOIN TB_CLIENTE		   	   CL
    ON V.ID_CLIENTE	 	       = CL.ID_CLIENTE
  JOIN TB_ENDERECO			   EN	
  	ON EN.ID_ENDERECO          = V.ID_ENDERECO_ENTREGA
  JOIN TB_VENDA_ITEM		   VI 
  	on VI.ID_VENDA			   = V.ID_VENDA
  JOIN TB_PRODUTO			   P 
  	on P.ID_PRODUTO			   = VI.ID_PRODUTO
  JOIN TB_CATEGORIA			   C 
  	on C.ID_CATEGORIA		   = P.ID_CATEGORIA
  JOIN TB_ESTOQUE			   E 
  	ON E.ID_PRODUTO			   = P.ID_PRODUTO
 WHERE V.ID_CLIENTE IS NULL;
```

#### PARTE III 

### DESAFIO 15
```sql=
SELECT V.ID_VENDA,
	   COUNt (VI.ID_VENDA_ITEM)		AS 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
```sql=
SELECT V.ID_VENDA,
	   COUNT (VI.ID_VENDA_ITEM)		QTD_ITEMS, 
       SUM (P.VL_PRECO)				VL_TOTAL_VENDA
  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
```sql=
SELECT V.ID_VENDA,
	   V.DT_VENDA,
       C.NM_CLIENTE,
       COUNT (VI.ID_VENDA_ITEM)		QTD_ITEMS, 
       SUM (P.VL_PRECO)				VL_TOTAL_VENDA
  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
 GROUP
 	by V.ID_VENDA,
       V.DT_VENDA,
       C.NM_CLIENTE;
```

### DESAFIO 18
```sql=
SELECT V.ID_VENDA,
	   V.DT_VENDA,
       C.NM_CLIENTE,
       COUNT (VI.ID_VENDA_ITEM)		QTD_ITEMS, 
       SUM (P.VL_PRECO)				VL_TOTAL_VENDA
  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
 GROUP
 	by V.ID_VENDA,
       V.DT_VENDA,
       C.NM_CLIENTE
HAVING SUM (P.VL_PRECO) > 1000;
```

### DESAFIO 19
```sql=
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_PRODUTO						P  
    ON P.ID_PRODUTO = VI.ID_PRODUTO
  JOIN TB_ENDERECO						E  
    ON E.ID_ENDERECO = V.ID_ENDERECO_ENTREGA
 GROUP
 	by E.DS_CIDADE 
 ORDER 
 	BY COUNT(VI.ID_VENDA_ITEM) DESC;
```

### DESAFIO 20
```sql=
SELECT nm_produto,
	   vl_preco,
       COUNT (VI.id_venda_item)			QTD_VENDAS
  FROM TB_VENDA_ITEM					VI 
  JOIN TB_PRODUTO						P 
    ON VI.ID_PRODUTO = P.ID_PRODUTO
 GROUP
 	BY nm_produto,
       vl_preco
 ORDER 
 	BY COUNT(VI.ID_VENDA_ITEM) DESC;
```

### DESAFIO MONSTER 

### DESAFIO 21
O MAIS PERTO QUE CHEGUEI
```sql=
SELECT ROW_NUMBER() OVER(ORDER BY QTD_COMPRAS ASC) AS ID_RANK,
	   CL.ID_CLIENTE,
	   CL.NM_CLIENTE,
       CL.DS_CPF,
       COUNT (VI.ID_VENDA_ITEM)			QTD_COMPRAS
  FROM TB_VENDA_ITEM    VI
  JOIN TB_VENDA         V 
  	ON V.ID_VENDA 	    = VI.ID_VENDA
  JOIN TB_CLIENTE       CL
  	on CL.ID_CLIENTE 	= V.ID_CLIENTE
 GROUP
 	by CL.NM_CLIENTE
 ORDER
  	BY COUNT (VI.ID_VENDA) DESC
 LIMIT 5;
```