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

PROVA SAS

  • 1.
    1 - Qualsã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 TABELACONTEM 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