Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions Eduardo/dia_01/SELECT_FROM.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
-- Databricks notebook source
SELECT * FROM silver.olist.pedido

--SELECIONE TODAS AS COLUNAS DA TABELA silver.olist.pedido

-- COMMAND ----------

SELECT
idPedido, --select naõ é filtro, apenas seleciona colunas
idCliente,
dtEntregue

FROM silver.olist.pedido

-- COMMAND ----------

SELECT *,
dtEntregue > dtEstimativaEntrega AS flAtraso -- aqui tem datas que nao sao atrtasos pq é o que importa em dia e nao horas. vamos converter isso em data

-- (posso usar ou nao o AS, mas é legal usar pra nao confundir)aqui tenho um operador criando uma condição e isso vai gerar uma nova coluna.

FROM silver.olist.pedido

-- COMMAND ----------


SELECT *,
idCliente,
dtEntregue,
dtEstimativaEntrega,
DATE(dtEntregue) as dataEntrega,
DATE(dtEstimativaEntrega),
dtEntregue > dtEstimativaEntrega AS flAtraso
DATE(dtEntregue) > DATE(dtEstimativaEntrega) AS flDataAtraso -- para validarmos
FROM silver.olist.pedido

-- COMMAND ----------

-- DOCUMENTAÇÃO DO SPARK - https://spark.apache.org/docs/latest/api/sql/index.html
-- PODEMOS CONSULTAR TODAS AS FUNÇÕES DO SQL

-- COMMAND ----------

SELECT
idProduto,
vlComprimentoCm * vlAlturaCm * vlLarguraCm as volCm3 -- operaçoes matematica
FROM silver.olist.produto
52 changes: 52 additions & 0 deletions Eduardo/dia_01/SELECT_FROM_WHERE.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-- Databricks notebook source
SELECT *
FROM silver.olist.pedido
WHERE date(dtEntregue) > date(dtEstimativaEntrega) --aqui tiramos as horas e fizemos a operação no filtro

-- COMMAND ----------

-- USO DO OR E AND

SELECT *
FROM silver.olist.produto
WHERE descCategoria = 'bebes'

-- COMMAND ----------

SELECT *
FROM silver.olist.produto
WHERE (descCategoria = 'bebes'
OR descCategoria = 'perfumaria' -- aqui tem esse parentese para resolver um ou outro dentro
OR descCategoria = 'artes')
AND vlComprimentoCm * vlAlturaCm > 1000

--As condições dentro dos parênteses (descCategoria = 'bebes' OR descCategoria = 'perfumaria' OR descCategoria = 'artes') formam uma cláusula OR, que indica que um registro será incluído se atender a pelo menos uma das condições entre parênteses. Neste caso, o registro será incluído se a coluna "descCategoria" for igual a 'bebes', 'perfumaria' ou 'artes'.'''

-- COMMAND ----------

--operador IN
SELECT *
FROM silver.olist.produto
WHERE descCategoria IN ('bebes','perfumaria', 'artes') -- o IN substitui melhor o OR
AND vlComprimentoCm * vlAlturaCm > 1000


-- COMMAND ----------

--operador LIKE

SELECT *

FROM silver.olist.produto
WHERE descCategoria LIKE 'ferramentas%' -- % pegar qualquer coisa que vier depois, pode tbm ser no inicioou pode ser um nome e espaço%

-- COMMAND ----------

--usando STARTWITH
SELECT *

FROM silver.olist.produto

WHERE startswith(descCategoria, 'ferramentas') -- uso do starwith e contains
AND contains(descCategoria, 'ferramentas' )

2 changes: 2 additions & 0 deletions Eduardo/dia_01/teste_teo_2023-09-14.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- Databricks notebook source
SELECT "Olá!" -- teste
19 changes: 19 additions & 0 deletions Eduardo/dia_02/CASE_WHEN.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- Databricks notebook source
SELECT *,
-- iremos criar uma variavel nova com o reultado dos filtros que faremos
CASE WHEN descUF = 'SP' THEN 'Paulista'
ELSE 'Desconhecido' -- podemos usar o else
END as naturalidade -- o end sempre fnaliza o case

FROM silver.olist.cliente

-- COMMAND ----------

SELECT *,
-- iremos criar uma variavel nova com o reultado dos filtros que faremos
CASE WHEN descUF = 'SP' THEN 'Paulista'
WHEN descUF = "PE" THEN 'Pernambucano' -- posso ir add varios cases, o when é a tratativa para essa coluna
ELSE 'Desconhecido' -- podemos usar o else
END as naturalidade -- o end sempre fnaliza o case

FROM silver.olist.cliente
14 changes: 14 additions & 0 deletions Eduardo/dia_02/DISTINCT.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- Databricks notebook source
-- MANEIRA DE ENCONTRAR LINHAS DISTINTAS NA CONSULTA
-- o distinct traz linhas distintas - o foco sao em linhas que nao se repetem

SELECT DISTINCT descUF
FROM silver.olist.cliente


-- COMMAND ----------

-- agora quero trazer as informaçõe sde cidade e uf, o UF se repete mas as cidades nao se repetem mais

SELECT DISTINCT descUF, descCidade
FROM silver.olist.cliente
154 changes: 154 additions & 0 deletions Eduardo/dia_02/EXERCÍCIOS_DIA_02.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
-- Databricks notebook source
-- selecione todos os clientes paulistanos
SELECT idCliente, descUF
FROM silver.olist.cliente
WHERE descUF = 'SP'


-- COMMAND ----------

-- selecone todos os clinetes paulistas

SELECT idCliente, descCidade
FROM silver.olist.cliente
WHERE descCidade = 'sao paulo'


-- COMMAND ----------

-- selecione todos os vendedores cariocas(RJ cidade) e paulista(estado todo)

select idVendedor, descCidade, descUF
from silver.olist.vendedor
where (descCidade = 'rio de janeiro' and descUF = 'RJ') or descUF = 'SP' -- esse or é importante então isolamos o and e depois o or para poder pegar dois resultados , nao posso usar uma lista para isso pq
order by descCidade

-- COMMAND ----------

-- selecione produtos de perfumaria e bebes com altura maior de 5 cm

select idProduto, descCategoria, vlAlturaCm
from silver.olist.produto
where descCategoria in ('perfumaria', 'bebes') and vlAlturaCm > 5
order by vlAlturaCm asc

-- COMMAND ----------

-- Lista de pedidos com mais de um item.
SELECT DISTINCT idPedido
FROM silver.olist.item_pedido
WHERE idPedidoItem >1



-- COMMAND ----------

-- Lista de pedidos que o frete é mais caro que o item.

SELECT *
FROM silver.olist.item_pedido
WHERE vlFrete > vlPreco


-- COMMAND ----------

-- Lista de pedidos que ainda não foram enviados.
SELECT *
FROM silver.olist.pedido
WHERE dtEntregue IS NULL

-- COMMAND ----------

--Lista de pedidos que foram entregues com atraso.

SELECT *
FROM silver.olist.pedido
WHERE date(dtEntregue) > date(dtEstimativaEntrega)

-- COMMAND ----------

--Lista de pedidos que foram entregues com 2 dias de antecedência.

SELECT *
FROM silver.olist.pedido
WHERE DATEDIFF(day, dtEstimativaEntrega, dtEntregue) = 2

-- COMMAND ----------

--Lista de pedidos feitos em dezembro de 2017 e entregues com atraso

SELECT *
FROM silver.olist.pedido
WHERE EXTRACT(month FROM dtPedido) = 12 and dtEntregue > dtEstimativaEntrega

-- COMMAND ----------

--Lista de pedidos com avaliação maior ou igual que 4

SELECT *
FROM silver.olist.avaliacao_pedido
WHERE vlNota >= 4
ORDER BY vlNota

-- COMMAND ----------

-- Lista de pedidos com 2 ou mais parcelas menores que R$20,00

SELECT *
FROM silver.olist.pagamento_pedido
WHERE nrParcelas >=2 AND vlPagamento > 20
ORDER BY nrParcelas

-- COMMAND ----------

--Selecione todos os pedidos e marque se houve atraso ou não

SELECT * ,
CASE WHEN date(dtEntregue) > date(dtEstimativaEntrega) THEN 'Atrasou'
ELSE 'Não atrasou'
END AS condicao

FROM silver.olist.pedido


-- COMMAND ----------

--Selecione os pedidos e defina os grupos em uma nova coluna:
--para frete inferior à 10%: ‘10%’
--para frete entre 10% e 25%: ‘10% a 25%’
--para frete entre 25% e 50%: ‘25% a 50%’
--para frete maior que 50%: ‘+50%’

SELECT * ,
CASE WHEN vlFrete/vlPreco < 0.10 THEN '10%'
WHEN vlFrete/vlPreco >= 0.10 and vlFrete/vlPreco < 0.25 THEN '10% a 25%'
WHEN vlFrete/vlPreco >= 0.25 and vlFrete/vlPreco < 0.50 THEN '25% a 50%'
WHEN vlFrete/vlPreco >= 0.50 THEN '+50%'
END as condicao
FROM silver.olist.item_pedido



-- COMMAND ----------

-- MAGIC %md
-- MAGIC **DESAFIO**
-- MAGIC
-- MAGIC Selecione a tabela silver.olist.produto :
-- MAGIC ○ Crie uma coluna nova chamada ‘descNovaCategoria’ seguindo:
-- MAGIC i. agrupe ‘alimentos’ e ‘alimentos_bebidas’ em ‘alimentos’
-- MAGIC ii. agrupe ‘artes’ e ‘artes_e_artesanato’ em ‘artes’
-- MAGIC iii. agrupe todas categorias de construção em uma única categoria
-- MAGIC chamada ‘construção’
-- MAGIC ○ Cria uma coluna nova chamada ‘descPeso’
-- MAGIC i. para peso menor que 2kg: ‘leve’
-- MAGIC ii. para peso entre 2kg e 5kg: ‘médio’
-- MAGIC iii. para peso entre 5kg e 10kg: ‘pesado’
-- MAGIC iv. para peso maior que 10kg: ‘muito pesado’

-- COMMAND ----------

SELECT *
--CASE WHEN des

FROM silver.olist.produto
7 changes: 7 additions & 0 deletions Eduardo/dia_02/ORDER_BY.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Databricks notebook source

SELECT *
FROM silver.olist.produto
WHERE descCategoria = 'bebes'
ORDER BY vlPesoGramas DESC, vlComprimentoCm DESC -- ordem descrecente do peso e também pelo comprimento, temos que colocar asc ou desc em cada variavel