# Session four | Banco de Dados | 2° bimestre
**Nome** Kevin Ribeiro de Andrade
**Número** 27
**Turma** INFO A
## SELECT
```sql=
SELECT
C.nm_categoria,
P.nm_produto,
P.vl_preco
FROM TB_VENDA_ITEM VT
INNER JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
INNER JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
INNER JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
INNER JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
RIGHT JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
ORDER
BY C.nm_categoria AND P.nm_produto;
```
```sql=
SELECT
C.nm_categoria,
P.nm_produto,
P.vl_preco,
E.qtd_minima,
E.qtd_disponivel
FROM TB_VENDA_ITEM VT
INNER JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
INNER JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
INNER JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
INNER JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
RIGHT JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
WHERE E.qtd_disponivel < E.qtd_minima
ORDER
BY C.nm_categoria AND P.nm_produto;
```
```sql=
SELECT
C.nm_categoria,
P.nm_produto,
P.vl_preco,
E.qtd_minima,
E.qtd_disponivel
FROM TB_VENDA_ITEM VT
INNER JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
RIGHT JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
INNER JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
INNER JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
RIGHT JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
ORDER
BY P.vl_preco desc;
```
```sql=
SELECT CL.nm_cliente,
CL.ds_CPF,
EN.ds_CEP,
EN.ds_endereco,
EN.ds_cidade
FROM TB_VENDA_ITEM VT
INNER JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
INNER JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
ORDER
BY EN.ds_cidade;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
V.ds_nota_fiscal,
V.tp_forma_pagamento,
EN.ds_endereco,
EN.nr_endereco
FROM TB_VENDA_ITEM VT
INNER JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
INNER JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
WHERE V.dt_venda BETWEEN '2021-01-01' AND'2021-06-31'
ORDER
BY V.id_venda;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
V.ds_nota_fiscal,
V.tp_forma_pagamento,
EN.ds_endereco,
EN.nr_endereco
FROM TB_VENDA_ITEM VT
INNER JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
RIGHT JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
ORDER
BY V.id_venda;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
V.ds_nota_fiscal,
V.tp_forma_pagamento,
EN.ds_endereco,
EN.nr_endereco
FROM TB_VENDA_ITEM VT
LEFT JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
RIGHT JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
WHERE V.dt_venda BETWEEN '2021-01-01' AND'2021-06-31'
ORDER
BY V.id_venda;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
V.ds_nota_fiscal,
V.tp_forma_pagamento,
EN.ds_endereco,
EN.nr_endereco,
C.nm_categoria,
P.nm_produto,
P.vl_preco
FROM TB_VENDA_ITEM VT
JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
WHERE V.dt_venda BETWEEN '2021-01-01' AND'2021-06-31'
ORDER
BY V.id_venda;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
V.ds_nota_fiscal,
V.tp_forma_pagamento,
EN.ds_endereco,
EN.nr_endereco,
C.nm_categoria,
P.nm_produto,
P.vl_preco
FROM TB_VENDA_ITEM VT
JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
INNER JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
WHERE V.dt_venda BETWEEN '2021-01-01' AND'2021-06-31'
ORDER
BY V.id_venda;
```
# Parte 2
```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 P.id_produto NOT IN (SELECT id_produto FROM TB_VENDA_ITEM);
```
```sql=
SELECT
C.nm_categoria,
P.nm_produto,
P.vl_preco
FROM TB_PRODUTO P
RIGHT JOIN TB_CATEGORIA C
ON C.id_categoria = P.id_categoria
WHERE P.id_produto is null;
```
```sql=
SELECT
CL.id_cliente,
CL.nm_cliente,
CL.ds_cpf
FROM TB_CLIENTE CL
LEFT JOIN TB_ENDERECO EN
ON EN.id_endereco = CL.id_endereco
WHERE CL.id_endereco is null;
```
```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.nm_categoria,
P.vl_preco
FROM TB_VENDA_ITEM VT
RIGHT JOIN TB_VENDA V
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
JOIN TB_ESTOQUE E
ON E.id_produto = P.id_produto
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
JOIN TB_CLIENTE CL
ON CL.id_endereco = EN.id_endereco
JOIN TB_CATEGORIA C
ON P.id_categoria = C.id_categoria
WHERE V.id_cliente is null;
```
## parte 3
```sql=
SELECT V.id_venda,
COUNT(VT.id_venda_item) qtd_item
FROM TB_VENDA V
JOIN TB_VENDA_ITEM VT
ON V.id_venda = VT.id_venda
GROUP
BY V.id_venda;
```
```sql=
SELECT V.id_venda,
COUNT(VT.id_venda_item) qtd_item,
SUM(P.vl_preco)
FROM TB_VENDA V
JOIN TB_VENDA_ITEM VT
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
GROUP
BY V.id_venda;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
COUNT(VT.id_venda_item) qtd_item,
SUM(P.vl_preco)
FROM TB_VENDA V
JOIN TB_VENDA_ITEM VT
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
JOIN TB_CLIENTE CL
ON V.id_cliente = CL.id_cliente
GROUP
BY V.id_venda,
V.dt_venda,
CL.nm_cliente;
```
```sql=
SELECT V.id_venda,
V.dt_venda,
CL.nm_cliente,
COUNT(VT.id_venda_item) qtd_item,
SUM(P.vl_preco)
FROM TB_VENDA V
JOIN TB_VENDA_ITEM VT
ON V.id_venda = VT.id_venda
JOIN TB_PRODUTO P
ON P.id_produto = VT.id_produto
JOIN TB_CLIENTE CL
ON V.id_cliente = CL.id_cliente
GROUP
BY V.id_venda,
V.dt_venda,
CL.nm_cliente
HAVING SUM(P.vl_preco) > 1000;
```
```sql=
SELECT EN.ds_cidade,
COUNT(VT.id_venda_item) qtd_venda
FROM TB_VENDA V
JOIN TB_VENDA_ITEM VT
ON V.id_venda = VT.id_venda
JOIN TB_ENDERECO EN
ON EN.id_endereco = V.id_endereco_entrega
GROUP
BY EN.ds_cidade
ORDER
BY COUNT (VT.id_venda_item);
# Desafio Monster
```sql=
SELECT ROW_NUMBER() OVER(PARTITION BY CL.id_cliente ORDER BY V.id_venda ASC) AS row#,
V.id_venda,
CL.id_cliente,
CL.nm_cliente
FROM TB_VENDA V
JOIN TB_CLIENTE CL
ON CL.id_cliente = V.id_cliente
WHERE V.id_cliente = 4
GROUP
BY CL.nm_cliente;
```