Soma com condição no SAS: Agrupamentos com Proc Sql

O group by é um método bem tranquilo de agrupar os valores de uma coluna de acordo com os valores de outra coluna. Veja os três exemplos abaixo, onde queremos primeiro saber qual o número de vendas de cada marca, o número de vendas por estado e o número de vendas de cada marca em cada estado:

Agrupamento_B

PROC SQL;
    CREATE TABLE VENDAS_P_MARCA AS
    SELECT MARCA, SUM(VENDAS) AS VENDAS
    FROM TABELA_VENDAS
    GROUP BY 1;
RUN;

Agrupamento_A

PROC SQL;
    CREATE TABLE VENDAS_P_ESTADO AS
    SELECT ESTADO, SUM(VENDAS) AS VENDAS
    FROM TABELA_VENDAS
    GROUP BY 1;
RUN;

Agrupamento_C

PROC SQL;
    CREATE TABLE VENDAS_P_ESTADO_MARCA AS
    SELECT MARCA, ESTADO, SUM(VENDAS) AS VENDAS
    FROM TABELA_VENDAS
    GROUP BY 1,2;
RUN;

Agora, suponha que a tabela seja um pouco mais ampla, contendo também a data em que as vendas foram feitas. Seja para fazer uma análise exploratória acompanhando a evolução das vendas, ou para fazer um modelo de séries temporais, por estado, você não conseguirá usar o group byé aí que entra o case when. Geralmente utilizamos o case when como um if… then… e as condições. Para fazer uma interação com a soma, você talvez estranhe a sintaxe, mas é bem simples de entender visualizando a tarefa:

Agrupamento_D
**** SOMA COM CONDICAO E AGRUPA *****;
    PROC SQL;
    CREATE TABLE VENDAS_MARCA_FINAL AS
    SELECT MARCA, DATA
       SUM (CASE WHEN ESTADO = "SP" THEN VENDAS ELSE 0 END) AS VENDAS_SP,
       SUM (CASE WHEN ESTADO = "RS" THEN VENDAS ELSE 0 END) AS VENDAS_RS,
       SUM (CASE WHEN ESTADO = "AM" THEN VENDAS ELSE 0 END) AS VENDAS_AM,
       SUM (CASE WHEN ESTADO = "GO" THEN VENDAS ELSE 0 END) AS VENDAS_GO,
       SUM (CASE WHEN ESTADO = "RJ" THEN VENDAS ELSE 0 END) AS VENDAS_RJ
     FROM TABELA_VENDAS
     GROUP BY 1,2;
QUIT;
Anúncios

1 comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s