Sas: come utilizzare la clausola having in proc sql


È possibile utilizzare la clausola HAVING in PROC SQL in SAS per filtrare le righe che soddisfano una determinata condizione.

Nota la sottile differenza tra le clausole WHERE e HAVING :

  • WHERE filtra le righe prima che avvenga un raggruppamento.
  • HAVING filtra le righe dopo ogni raggruppamento.

L’esempio seguente mostra come utilizzare nella pratica la clausola HAVING .

Esempio: come utilizzare la clausola HAVING in PROC SQL

Supponiamo di avere il seguente set di dati in SAS che contiene informazioni su vari giocatori di basket:

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

Possiamo utilizzare il seguente codice per calcolare la somma dei punti segnati dai giocatori di ciascuna squadra DOVE i giocatori sono guardie, quindi filtrare i risultati per mostrare solo le squadre CHE HANNO una somma maggiore di 50:

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

Ecco esattamente come funzionava questo codice:

  • Innanzitutto, abbiamo utilizzato SELECT per selezionare la squadra e la somma dei punti
  • Quindi abbiamo utilizzato WHERE per filtrare le righe in cui la posizione era “Guardia”
  • Successivamente, abbiamo utilizzato GRUPPO per raggruppare i risultati per squadra
  • Successivamente, abbiamo utilizzato HAVING per filtrare le squadre con una somma di punti > 50.

Ecco come sarebbero stati i risultati di questa query se non avessimo incluso l’istruzione HAVING :

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

Tieni presente che la somma dei punti della squadra B non era superiore a 50.

Pertanto, quando abbiamo utilizzato l’istruzione HAVING nell’esempio precedente, abbiamo filtrato la squadra B poiché la somma dei punti non era superiore a 50.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:

SAS: come utilizzare l’operatore LIKE in PROC SQL
SAS: come utilizzare l’operatore IN in PROC SQL
SAS: come utilizzare l’operatore WHERE in PROC SQL

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *