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