1. JOIN no SQL relaciona tabelas usando chaves comuns enquanto MERGE no SAS une tabelas com base em correspondências de linhas.
2. Os códigos mostrarão um JOIN LEFT usando SQL e um MERGE no SAS para unir duas tabelas com base no campo chave ID e trazer o ID e NOME.
3. Os esqueletos ordenarão uma tabela e removerão duplicados usando PROC SORT no SAS e removendo duplicados no SQL.
1. 1 - Qual são as principais diferenças e premissas entre JOIN (SQL) e MERGE
(DATA STEP) ?
2 – Escreva dois códigos de relacionamento, um usando JOIN (SQL) e o outro
MERGE (SAS).
Obs. Campo chave = ID.
Obs2. Trazer o campo id e o NOME da tabela1.
Obs3. LEFT JOIN
PS. Tabelasnão ordenada.
Estrutura das tabelassegue abaixo:
/* Estrutura das Tabelas:
Tabela1
Campo: ID - NUMERICO(2)
NOME - CHAR(30);
Tabela2
Campo: ID -CHAR(2)
NOME - CHAR(30);
Estrutura das Tabelas*/
3 – Faça o esqueleto de dois código para ordenar uma tabela e remover as
chaves duplicadas (SQL e SAS ).
Tabela: Table_chaves
Campo Chave: CPF
4 – Efetuar melhorias nos códigos Abaixo (Usar macro quando for
necessário).
A) /*CADA TABELA CONTEM UMA MEDIA DE 180 MILHÕES DE
REGISTROS.*/
data table_melhoria;
set table_precaria;
if campo = 1 AND MISSING(CAMPOX) then receba = 31;
if campo = 4 AND MISSING(CAMPOX) then receba = 31;
if campo = 0 AND NOT(MISSING(CAMPOX)) then receba = 45;
if campo = 2 AND NOT(MISSING(CAMPOX))then receba = 22;
if campo = 7 AND NOT(MISSING(CAMPOX))then receba = 3120;
if campo = 9 AND MISSING(CAMPOX) then receba = 21;
if campo = 5 AND MISSING(CAMPOX) then receba = 45;
if campo = 3 AND NOT(MISSING(CAMPOX))then receba = 12;
if campo = 6 AND MISSING(CAMPOX) then receba = 31;
run;
2. B) /*CADA TABELA CONTEM UMA MEDIA DE 180 MILHÕES DE
REGISTROS.*/
PROCSQL;
CREATE TABLE TABLE_MELHORIA_2 AS
SELECT *
FROM CLIENTES
INNER JOIN VENDAS ON CLIENTES.CPF = VENDAS.CPF
LEFT JOIN ESTOQUE ON ESTOQUE.ID_PRODUTO = VENDAS.ID_PRODUTO
WHERE CLIENTES.ATIVO = 'SIM'
;RUN;
C) NULL
PROC SORT DATA=T1; BY ID; RUN;
PROC SORT DATA=T2; BY ID; RUN;
PROC SORT DATA=T3; BY ID; RUN;
PROC SORT DATA=T4; BY ID; RUN;
PROC SORT DATA=T5; BY ID; RUN;
PROC SORT DATA=T6; BY ID; RUN;
PROC SORT DATA=T7; BY ID; RUN;
PROC SORT DATA=T8; BY ID; RUN;
5- Desenvolva o código abaixo em maneiras diferentes.
Ex: data step, univariate, etc...
PROC SQL;
CREATE TABLE SOMA AS
SELECT TIPO, SUM(VALOR) AS SUM_VALOR
FROM TABLE_VALORES
GROUP BY 1
;RUN;
6- Efetue uma macro que vai fazer cálculos aritméticos (+ - * /), o cliente vai
passar 3 parâmetros.
7- Desenvolva uma MACRO que faça as seguintes ações.
A MACRO vai acessar uma biblioteca que vai ser especificada pelo o usuário e
vai listar todos as tabelas que contem nesta biblioteca, com este resultado vai
fazer uma amostra de 100 observações para cada tabela, alocando as
mesmas em uma biblioteca temporária(WORK).
A macro precisa ser dinâmica para que não seja necessário a interversão
humana posteriormente.
BOA SORTE