Sas: jak używać klauzuli having w proc sql


Możesz użyć klauzuli HAVING w PROC SQL w SAS-ie, aby filtrować wiersze spełniające określony warunek.

Zwróć uwagę na subtelną różnicę między klauzulami WHERE i HAVING :

  • WHERE filtruje wiersze przed wystąpieniem grupowania.
  • HAVING filtruje wiersze po dowolnym grupowaniu.

Poniższy przykład pokazuje, jak w praktyce wykorzystać klauzulę HAVING .

Przykład: Jak używać klauzuli HAVING w PROC SQL

Załóżmy, że mamy następujący zbiór danych w SAS-ie, który zawiera informacje o różnych koszykarzach:

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

Możemy użyć poniższego kodu, aby obliczyć sumę punktów zdobytych przez graczy w każdej drużynie , GDZIE gracze są obrońcami, a następnie przefiltrować wyniki, aby pokazać tylko drużyny MAJĄCE sumę większą niż 50:

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

Oto dokładnie, jak działał ten kod:

  • Najpierw za pomocą SELECT wybraliśmy drużynę i sumę punktów
  • Następnie użyliśmy WHERE do filtrowania wierszy, w których pozycją była „Strażnik”
  • Następnie użyliśmy GROUP , aby pogrupować wyniki według zespołów
  • Następnie użyliśmy HAVING do odfiltrowania drużyn z sumą punktów > 50.

Oto jak wyglądałyby wyniki tego zapytania, gdybyśmy nie uwzględnili instrukcji HAVING :

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

Należy pamiętać, że suma punktów Drużyny B nie przekraczała 50.

Kiedy więc w poprzednim przykładzie użyliśmy instrukcji HAVING , odfiltrowaliśmy drużynę B, ponieważ ich suma punktów nie była większa niż 50.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w SAS-ie:

SAS: Jak używać operatora LIKE w PROC SQL
SAS: Jak używać operatora IN w PROC SQL
SAS: Jak używać operatora WHERE w PROC SQL

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *