From 0c9a8706bae9614ddfc02785af3e76d08141eb97 Mon Sep 17 00:00:00 2001 From: "edutj@uol.com.br" Date: Fri, 15 Sep 2023 01:01:00 +0000 Subject: [PATCH 1/3] Fim dia 01 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fizemos exercícios. --- Eduardo/dia_01/SELECT_FROM.sql | 47 ++++++++++++++++++++++ Eduardo/dia_01/SELECT_FROM_WHERE.sql | 52 +++++++++++++++++++++++++ Eduardo/dia_01/teste_teo_2023-09-14.sql | 2 + 3 files changed, 101 insertions(+) create mode 100644 Eduardo/dia_01/SELECT_FROM.sql create mode 100644 Eduardo/dia_01/SELECT_FROM_WHERE.sql create mode 100644 Eduardo/dia_01/teste_teo_2023-09-14.sql diff --git a/Eduardo/dia_01/SELECT_FROM.sql b/Eduardo/dia_01/SELECT_FROM.sql new file mode 100644 index 0000000..025ea51 --- /dev/null +++ b/Eduardo/dia_01/SELECT_FROM.sql @@ -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 diff --git a/Eduardo/dia_01/SELECT_FROM_WHERE.sql b/Eduardo/dia_01/SELECT_FROM_WHERE.sql new file mode 100644 index 0000000..22ca313 --- /dev/null +++ b/Eduardo/dia_01/SELECT_FROM_WHERE.sql @@ -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' ) + diff --git a/Eduardo/dia_01/teste_teo_2023-09-14.sql b/Eduardo/dia_01/teste_teo_2023-09-14.sql new file mode 100644 index 0000000..6a907ef --- /dev/null +++ b/Eduardo/dia_01/teste_teo_2023-09-14.sql @@ -0,0 +1,2 @@ +-- Databricks notebook source +SELECT "Olá!" -- teste From d4a57820382cb919693a0e8183c255ac042f37af Mon Sep 17 00:00:00 2001 From: "edutj@uol.com.br" Date: Fri, 22 Sep 2023 01:09:54 +0000 Subject: [PATCH 2/3] dia_02 --- Eduardo/dia_02/CASE_WHEN.sql | 19 +++ Eduardo/dia_02/DISTINCT.sql | 14 ++ "Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" | 130 ++++++++++++++++++ Eduardo/dia_02/ORDER_BY.sql | 7 + 4 files changed, 170 insertions(+) create mode 100644 Eduardo/dia_02/CASE_WHEN.sql create mode 100644 Eduardo/dia_02/DISTINCT.sql create mode 100644 "Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" create mode 100644 Eduardo/dia_02/ORDER_BY.sql diff --git a/Eduardo/dia_02/CASE_WHEN.sql b/Eduardo/dia_02/CASE_WHEN.sql new file mode 100644 index 0000000..80f4129 --- /dev/null +++ b/Eduardo/dia_02/CASE_WHEN.sql @@ -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 diff --git a/Eduardo/dia_02/DISTINCT.sql b/Eduardo/dia_02/DISTINCT.sql new file mode 100644 index 0000000..5f68ded --- /dev/null +++ b/Eduardo/dia_02/DISTINCT.sql @@ -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 diff --git "a/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" "b/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" new file mode 100644 index 0000000..7385a40 --- /dev/null +++ "b/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" @@ -0,0 +1,130 @@ +-- 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 + + diff --git a/Eduardo/dia_02/ORDER_BY.sql b/Eduardo/dia_02/ORDER_BY.sql new file mode 100644 index 0000000..ae680dc --- /dev/null +++ b/Eduardo/dia_02/ORDER_BY.sql @@ -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 + From 7efa084b026bb819b8e1c2d81de32546da31bcef Mon Sep 17 00:00:00 2001 From: "edutj@uol.com.br" Date: Thu, 28 Sep 2023 22:21:13 +0000 Subject: [PATCH 3/3] 29092023 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exercícios --- "Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git "a/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" "b/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" index 7385a40..a1840ad 100644 --- "a/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" +++ "b/Eduardo/dia_02/EXERC\303\215CIOS_DIA_02.sql" @@ -128,3 +128,27 @@ 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