Sas: como usar a cláusula having no proc sql


Você pode usar a cláusula HAVING no PROC SQL no SAS para filtrar linhas que atendem a uma determinada condição.

Observe a diferença sutil entre as cláusulas WHERE e HAVING :

  • WHERE filtra linhas antes que ocorra um agrupamento.
  • HAVING filtra linhas após qualquer agrupamento.

O exemplo a seguir mostra como usar a cláusula HAVING na prática.

Exemplo: como usar a cláusula HAVING no PROC SQL

Suponha que temos o seguinte conjunto de dados no SAS que contém informações sobre vários jogadores de basquete:

 /*create dataset*/
data my_data;
    input team $position $points;
    datalines ;
A Guard 22
A Guard 20
A Guard 30
A Forward 14
A Forward 11
B Guard 12
B Guard 22
B Forward 30
B Forward 9
B Forward 12
B Forward 25
C Guard 22
C Guard 19
C Guard 10
;
run ;

/*view dataset*/
proc print data =my_data; 

Podemos usar o código a seguir para calcular a soma dos pontos marcados pelos jogadores de cada equipe ONDE os jogadores são armadores e, em seguida, filtrar os resultados para mostrar apenas as equipes que POSSUEM uma soma superior a 50:

 proc sql ;
    select team, sum(points) as sum_points
    from my_data
    where position='Guard'
    group by team
    having sum_points > 50 ;
quit ; 

Veja exatamente como esse código funcionou:

  • Primeiro, usamos SELECT para selecionar a equipe e a soma dos pontos
  • Então usamos WHERE para filtrar linhas onde a posição era “Guarda”
  • A seguir, usamos GROUP para agrupar os resultados por equipe
  • Em seguida, usamos HAVING para filtrar equipes com soma de pontos > 50.

Aqui está como seriam os resultados desta consulta se não tivéssemos incluído a instrução HAVING :

 proc sql ;
    select team, sum(points) as sum_points
    from my_data
    where position='Guard'
    group by team;
quit ; 

Observe que a soma dos pontos do Time B não foi superior a 50.

Portanto, quando usamos a instrução HAVING no exemplo anterior, filtramos a equipe B, pois sua soma de pontos não era superior a 50.

Recursos adicionais

Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:

SAS: Como usar o operador LIKE no PROC SQL
SAS: Como usar o operador IN no PROC SQL
SAS: Como usar o operador WHERE no PROC SQL

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *