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