Sas: hoe de having-clausule in proc sql te gebruiken
U kunt de HAVING- clausule in PROC SQL in SAS gebruiken om rijen te filteren die aan een bepaalde voorwaarde voldoen.
Let op het subtiele verschil tussen WHERE- en HAVING- clausules:
- WHERE filtert rijen voordat er een groepering plaatsvindt.
- HAVING filtert rijen na elke groepering.
In het volgende voorbeeld ziet u hoe u de HAVING- clausule in de praktijk kunt gebruiken.
Voorbeeld: hoe u de HAVING-clausule in PROC SQL gebruikt
Stel dat we de volgende dataset in SAS hebben die informatie bevat over verschillende basketbalspelers:
/*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;
We kunnen de volgende code gebruiken om de som van de punten te berekenen die zijn gescoord door spelers in elk team WAAR de spelers bewakers zijn, en vervolgens de resultaten filteren om alleen teams weer te geven die een som groter dan 50 hebben :
proc sql ;
select team, sum(points) as sum_points
from my_data
where position='Guard'
group by team
having sum_points > 50 ;
quit ;
Hier is precies hoe deze code werkte:
- Eerst hebben we SELECT gebruikt om het team en de puntensom te selecteren
- Vervolgens gebruikten we WHERE om rijen te filteren waar de positie ‚Bewaker‘ was
- Vervolgens hebben we GROUP gebruikt om de resultaten per team te groeperen
- Vervolgens hebben we HAVING gebruikt om teams met een puntentotaal > 50 te filteren.
Hier ziet u hoe de resultaten van deze zoekopdracht eruit zouden hebben gezien als we de HAVING- instructie niet hadden opgenomen:
proc sql ;
select team, sum(points) as sum_points
from my_data
where position='Guard'
group by team;
quit ;
Merk op dat het puntentotaal van team B niet meer dan 50 was.
Dus toen we in het vorige voorbeeld de HAVING- instructie gebruikten, filterden we team B eruit omdat hun puntentotaal niet groter was dan 50.
Aanvullende bronnen
In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:
SAS: hoe u de LIKE-operator gebruikt in PROC SQL
SAS: Hoe de IN-operator in PROC SQL te gebruiken
SAS: Hoe de WHERE-operator in PROC SQL te gebruiken