# SESSION FOUR | BANCO DE DADOS
> **Aluna:** Patricia Oliveira Paulino
> **Número:** 37
> **Turma:** Info D
## Parte 1
> Select script
> Desafio 1
```sql=
- Filtrando por: nome da categoria.
- Ordenando por: nome da categoria e nome do produto.
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 = "Higiene e cuidados"
order
by nm_categoria,
nm_produto;
```
> Desafio 2
```sql=
- Filtrando por: produtos que possuem o estoque disponível menor que o estoque mínimo.
- Ordenando por: nome da categoria e nome do produto.
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=
- Filtrando por: nome categoria e nome do produto de forma parcial.
- Ordenando por: preço de forma decrescente.
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 '%[categoria]%'
and p.nm_produto like '%[produto]%'
order
by p.vl_preco desc;
```
> Desafio 4
```sql=
- Filtrando por: nome cliente e cidade.
- Ordenando por: cidade.
select nm_cliente,
ds_cpf,
ds_cep,
ds_endereco,
nm_endereco,
ds_cidade
from tb_cliente c
join tb_endereco e
on c.id_endereco = e.id_endereco
where nm_cliente like 'a%'
and ds_endereco like '%%'
order
by ds_cidade;
```
> Desafio 5
```sql=
-- Filtrando por: entre um período de início e fim da data da venda.
- Ordenando por: id da venda.
select id_venda,
dt_venda,
nm_cliente,
ds_nota_fiscal,
tp_forma_pagamento,
ds_endereco,
nm_endereco
from tb_venda v
join tb_cliente c
on v.id_cliente = c.id_cliente
join tb_endereco e
on e.id_endereco = v.id_endereco_entrega
where v.dt_venda between '2021-05-01' and '2021-05-20'
and ds_endereco like '%%'
order
by v.id_venda;
```
> Desafio 6
```sql=
- Filtrando por: nome cliente ou nota fiscal.
- Ordenando por: id da venda.
select id_venda,
dt_venda,
nm_cliente,
ds_nota_fiscal,
tp_forma_pagamento,
ds_endereco,
nm_endereco
from tb_venda v
join tb_cliente c
on v.id_cliente = c.id_cliente
join tb_endereco e
on e.id_endereco = v.id_endereco_entrega
where v.id_venda = 0
and v.ds_nota_fiscal = '2009'
order
by v.id_venda;
```
> Desafio 7
```sql=
- Filtrando por: data de venda, endereco.
- Ordenando por: id da venda.
select id_venda,
dt_venda,
nm_cliente,
ds_nota_fiscal,
tp_forma_pagamento,
ds_endereco,
nm_endereco
from tb_venda v
join tb_cliente c
on v.id_cliente = c.id_cliente
join tb_endereco e
on e.id_endereco = v.id_endereco_entrega
where v.id_venda = '2021-05-05'
and e.ds_endereco like '%%'
order
by v.id_venda;
```
> Desafio 8
```sql=
- Filtrando por: id da venda ou nota fiscal.
- Ordenando por: id da venda.
select v.id_venda,
v.dt_venda,
c.nm_cliente,
v.ds_nota_fiscal,
v.tp_forma_pagamento,
e.ds_endereco,
e.nm_endereco,
ca.nm_categoria,
p.nm_produto,
p.vl_preco,
es.qtd_minima,
es.qtd_disponivel
from tb_venda v
join tb_cliente c
on v.id_cliente = c.id_cliente
join tb_endereco e
on e.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 ca
on ca.id_categoria = p.id_produto
join tb_estoque es
on es.id_produto = p.id_produto
where v.id_venda = 1
order
by v.id_venda;
```
> Desafio 9
```sql=
- Filtrando por: data da venda.
- Ordenando por: id da venda.
select v.id_venda,
v.dt_venda,
c.nm_cliente,
v.ds_nota_fiscal,
v.tp_forma_pagamento,
e.ds_endereco,
e.nm_endereco,
ca.nm_categoria,
p.nm_produto,
p.vl_preco,
es.qtd_minima,
es.qtd_disponivel
from tb_venda v
join tb_cliente c
on v.id_cliente = c.id_cliente
join tb_endereco e
on e.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 ca
on ca.id_categoria = p.id_produto
join tb_estoque es
on es.id_produto = p.id_produto
where v.dt_venda = '2020-09-08'
order
by v.id_venda;
```
> Desafio 10
```sql=
- Filtrando por: data da venda.
- Ordenando por: nome do produto.
select nm_categoria,
nm_produto,
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_ptoduto
join tb_venda v
on v.id_venda = vi.id_venda_item
where v.dt_venda = '2020-05-08'
order
by p.vl_preco desc;
```
## Parte 2
> Select script
> Desafio 11
```sql=
- Filtrando pelos produtos que nunca foram vendidos.
select nm_categoria,
nm_produto,
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=
- Filtrando pelas categorias que não possuem produtos.
select c.nm_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;
```
> Desafio 13
```sql=
- Filtrando pelos clientes que não possuem endereço.
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=
- Filtrando pelas vendas que não possuem clientes.
select id_venda,
dt_venda,
nm_cliente,
ds_nota_fiscal,
tp_forma_pagamento,
ds_endereco,
nm_endereco
from tb_venda v
left join tb_cliente c
on v.id_cliente = c.id_cliente
join tb_endereco e
on e.id_endereco = v.id_endereco_entrega
where v.id_cliente is null
order
by v.id_venda;
```
## Parte 3
> Select script
> Desafio 15
```sql=
- Agrupando por id_venda.
- Selecionando a contagem de items por venda.
select v.id_venda
count(vi.id_venda_item) qtd
from tb_venda v
join tb_venda_item vi
on v.id_venda = vi.id_venda
group
by v.id_venda;
```
> Desafio 16
```sql=
- Agrupando por id_venda.
- Selecionando a contagem de items da venda e somando o preco dos itens da venda.
select v.id_venda
count(vi.id_venda_item) qtd
sum(p.vl_preco)
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
where v.dt_venda between '2020-05-01' and '2021-05-01'
group
by v.id_venda;
```
> Desafio 17
```sql=
- Agrupando por id da venda, data da venda e nome do cliente.
- Selecionando a contagem de items da venda e somando o preco dos itens da venda.
select v.id_venda,
c.nm_cliente,
v.dt_venda,
count(vi.id_venda_item) qtd
sum(p.vl_preco)
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-05-01'
group
by v.id_venda,
c.nm_cliente,
v.dt_venda;
```
> Desafio 18
```sql=
- Agrupando por id da venda, data da venda e nome do cliente.
- Selecionando a contagem de items da venda e somando o preco dos itens da venda.
- Tendo o valor total da vendo maior que R$1000,00.
select v.id_venda,
c.nm_cliente,
v.dt_venda,
count(vi.id_venda_item) qtd
sum(p.vl_preco)
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-05-01'
group
by v.id_venda,
c.nm_cliente,
v.dt_venda,
having
sum(p.vl_preco) > 50;
```
> Desafio 19
```sql=
- Consultando as cidades que mais tiveram vendas.
- Ordenando pela quantidade de vezes vendida de forma decrescente.
select e.ds_cidade
count(vi.id_venda_item)
count(vi.id_venda_item) qtd
sum(p.vl_preco)
from tb_venda v
join tb_venda_item vi on v.id_venda = vi.id_venda
join tb_endereco e on e.id_endereco_entrega = v.id_endereco_entrega
group
by e.ds_cidade
order
by count BY(vi.id_venda_item) desc;
```
> Desafio 20
```sql=
- Consultando os produtos mais vendidos.
- Ordenando pela quantidade de vezes vendida de forma decrescente.
select p.id_produto,
p.nm_produto,
c.nm_categoria,
p.vl_preco,
count(vi.id_venda_item)
sum(p.vl_preco)
from tb_venda v
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;
```
## Desafio Monster
> Select script
> Desafio Monster
```sql=
- Consultando os top 5 clientes que mais compraram
- Ordenando pela quantidade de vezes comprada de forma decrescente
```
{"metaMigratedAt":"2023-06-16T02:53:15.480Z","metaMigratedFrom":"Content","title":"SESSION FOUR | BANCO DE DADOS","breaks":true,"contributors":"[{\"id\":\"694aa08f-556c-44e2-bd76-36a3a1863269\",\"add\":9857,\"del\":0}]"}