# Session Four: Query or not to Query? QUERY!!!! | Banco de Dados
**Autor**: Vitório Trindade Santana
**Número**: 50
**Turma**: Informática C
[toc]
## Parte 1
### Desafio 1
```sql=
SELECT C.NM_Categoria,
P.NM_Produto,
P.VL_Preco
FROM TB_Produto P
JOIN TB_Categoria C
ON C.ID_Categoria = P.ID_Categoria
WHERE C.NM_Categoria = "Eletrônicos"
ORDER BY P.NM_Produto,
C.NM_Categoria;
```
### Desafio 2
```sql=
SELECT C.NM_Categoria,
P.NM_Produto,
P.VL_Preco,
E.QTD_Minima,
E.QTD_Disponivel
FROM TB_Estoque E
JOIN TB_Produto P
ON P.ID_Produto = E.ID_Produto
JOIN TB_Categoria C
ON C.ID_Categoria = P.ID_Categoria
WHERE E.QTD_Minima > E.QTD_Disponivel
ORDER BY P.NM_Produto,
C.NM_Categoria;
```
### Desafio 3
```sql=
SELECT C.NM_Categoria,
P.NM_Produto,
P.VL_Preco,
E.QTD_Minima,
E.QTD_Disponivel
FROM TB_Estoque E
JOIN TB_Produto P
ON P.ID_Produto = E.ID_Produto
JOIN TB_Categoria C
ON C.ID_Categoria = P.ID_Categoria
WHERE C.NM_Categoria like 'Livra%'
And P.NM_Produto like '%A%'
ORDER BY P.VL_Preco DESC;
```
### Desafio 4
```sql=
SELECT C.NM_Cliente,
C.DS_Cpf,
E.DS_Endereco,
E.NR_Endereco,
E.DS_Cidade
FROM TB_Cliente C
JOIN TB_Endereco E
ON E.ID_Endereco = C.ID_Endereco
WHERE C.NM_Cliente = 'Heloisa Isabela Barbosa'
AND E.DS_Cidade = 'São Paulo'
ORDER BY E.DS_Cidade;
```
### Desafio 5
```sql=
SELECT V.ID_Venda,
V.DT_Venda,
C.NM_Cliente,
V.DS_Nota_Fiscal,
V.TP_Forma_Pagamento,
E.DS_Endereco,
E.NR_Endereco
FROM TB_Venda V
JOIN TB_Cliente C
ON C.ID_Cliente = V.ID_Cliente
JOIN TB_Endereco E
ON E.ID_Endereco = C.ID_Endereco
WHERE V.DT_Venda BETWEEN '2021-05-26' And '2021-07-28'
ORDER BY V.ID_Venda;
```
### Desafio 6
```sql=
SELECT V.ID_Venda,
V.DT_Venda,
C.NM_Cliente,
V.DS_Nota_Fiscal,
V.TP_Forma_Pagamento,
E.DS_Endereco,
E.NR_Endereco
FROM TB_Venda V
JOIN TB_Cliente C
ON C.ID_Cliente = V.ID_Cliente
JOIN TB_Endereco E
ON E.ID_Endereco = C.ID_Endereco
WHERE C.NM_Cliente = 'Carlos Marcos Costa'
OR V.DS_Nota_Fiscal = '38723816'
ORDER BY V.ID_Venda;
```
### Desafio 7
```sql=
SELECT V.ID_Venda,
V.DT_Venda,
C.NM_Cliente,
V.DS_Nota_Fiscal,
V.TP_Forma_Pagamento,
E.DS_Endereco,
E.NR_Endereco
FROM TB_Venda V
JOIN TB_Cliente C
ON C.ID_Cliente = V.ID_Cliente
JOIN TB_Endereco E
ON E.ID_Endereco = C.ID_Endereco
WHERE V.DT_Venda = '2021-09-03'
AND E.DS_Endereco = 'Rua Alfredo Corêa'
ORDER BY V.ID_Venda;
```
### Desafio 8
```sql=
SELECT V.ID_Venda,
V.DT_Venda,
Cl.NM_Cliente,
V.DS_Nota_Fiscal,
E.DS_Endereco,
E.NR_Endereco,
P.NM_Produto,
C.NM_Categoria,
P.VL_Preco
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
JOIN TB_Endereco E
ON E.ID_Endereco = Cl.ID_Endereco
JOIN TB_Produto P
ON P.ID_Produto = VI.ID_Produto
JOIN TB_Categoria C
ON C.ID_Categoria = P.ID_Categoria
WHERE V.ID_Venda = 5
OR V.DS_Nota_Fiscal = '87163289'
ORDER BY V.ID_Venda;
```
### Desafio 9
```sql=
SELECT V.ID_Venda,
V.DT_Venda,
Cl.NM_Cliente,
V.DS_Nota_Fiscal,
E.DS_Endereco,
E.NR_Endereco,
P.NM_Produto,
C.NM_Categoria,
P.VL_Preco
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
JOIN TB_Endereco E
ON E.ID_Endereco = Cl.ID_Endereco
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-02-19'
ORDER BY V.DT_Venda;
```
### Desafio 10
```sql=
SELECT DISTINCT
P.NM_Produto,
C.NM_Categoria,
P.VL_Preco
FROM TB_Produto P
JOIN TB_Categoria C
ON C.ID_Categoria = P.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 = '2021-11-7'
ORDER BY P.NM_Produto;
```
## Parte 2
### Desafio 11
```sql=
SELECT P.ID_Produto,
P.NM_Produto,
C.NM_Categoria,
P.VL_Preco
FROM TB_Produto P
JOin TB_Categoria C
ON C.ID_Categoria = P.ID_Categoria
Where P.ID_Produto not in (SELECT ID_Produto FROM TB_Venda_Item);
```
### Desafio 12
```sql=
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;
```
### Desafio 13
```sql=
SELECT C.ID_Cliente,
C.NM_Cliente,
C.DS_Cpf
FROM TB_Cliente C
LEFT JOin TB_Endereco E
ON E.ID_Endereco = C.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,
E.DS_Endereco,
P.NM_Produto,
C.NM_Categoria,
P.VL_Preco
FROM TB_Venda V
LEFT JOIN TB_Cliente Cl
ON V.ID_Cliente = Cl.ID_Cliente
JOin TB_Endereco E
ON E.ID_Endereco = V.ID_Endereco
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.ID_Cliente IS NULL;
```
## Parte 3
### Desafio 15
```sql=
SELECT V.ID_Venda,
COUNT (VI.ID_Venda_Item) as Qtd_Itens
From TB_Venda V
join TB_Venda_Item VI
on VI.ID_Venda = V.ID_Venda
group by V.ID_Venda;
```
### Desafio 16
```sql=
SELECT V.ID_Venda,
COUNT (VI.ID_Venda_Item) as Qtd_Itens,
Sum (P.VL_Preco) Total
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
group by V.ID_Venda;
```
### Desafio 17
```sql=
SELECT V.ID_Venda,
V.DT_Venda,
C.NM_Cliente,
COUNT (VI.ID_Venda_Item) as Qtd_Itens,
Sum (P.VL_Preco) VL_Total_Venda
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_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) as Qtd_Itens,
Sum (P.VL_Preco) VL_Total_Venda
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_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 (V.ID_Venda) as Qtd_Venda
From TB_Venda V
join TB_Endereco E
on E.ID_Endereco = V.ID_Endereco
group by E.DS_Cidade
Having COUNT(V.ID_Venda)
ORDER by Qtd_Venda DESC;
```
### Desafio 20
```sql=
SELECT P.ID_Produto,
P.NM_Produto,
C.NM_Categoria,
COUNT (VI.ID_Produto) as Qtd_Vendas
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
group by P.ID_Produto,
P.NM_Produto,
C.NM_Categoria
Having COUNT (VI.ID_Produto)
ORDER by Qtd_Vendas DESC;
```
## Última parte
### Desafio MONSTER
```sql=
SELECT
DENSE_RANK() OVER (ORDER BY COUNT (V.ID_Cliente) DESC) as ID_Rank,
V.ID_Cliente,
C.NM_Cliente,
C.DS_Cpf,
COUNT (V.ID_Cliente) as Qtd_Compras
From TB_Venda_Item VI
JOin TB_Venda V
on V.ID_Venda = VI.ID_Venda
join TB_Cliente C
on C.ID_Cliente = V.ID_Cliente
group by V.ID_Cliente,
C.NM_Cliente,
C.DS_Cpf
Order by COUNT(V.ID_Cliente) DESC
limit 5;
```
{"metaMigratedAt":"2023-06-16T01:13:31.385Z","metaMigratedFrom":"Content","title":"Session Four: Query or not to Query? QUERY!!!! | Banco de Dados","breaks":true,"contributors":"[{\"id\":\"052c8e10-b233-429a-a1e0-0d8df7864830\",\"add\":8706,\"del\":390}]"}