Sas: як використовувати пропозицію having у proc sql
Ви можете використовувати пропозицію HAVING у PROC SQL у SAS, щоб фільтрувати рядки, які відповідають певній умові.
Зверніть увагу на тонку різницю між реченнями WHERE і HAVING :
- WHERE фільтрує рядки перед групуванням.
- HAVING фільтрує рядки після будь-якого групування.
У наступному прикладі показано, як використовувати речення HAVING на практиці.
Приклад: як використовувати речення HAVING у PROC SQL
Припустімо, що в SAS є такий набір даних, який містить інформацію про різних баскетболістів:
/*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;
Ми можемо використати наступний код, щоб обчислити суму очок, набраних гравцями кожної команди , ДЕ гравці є захисниками, а потім відфільтрувати результати, щоб показати лише команди, ЯКІ МАЮТЬ суму більше 50:
proc sql ;
select team, sum(points) as sum_points
from my_data
where position='Guard'
group by team
having sum_points > 50 ;
quit ;
Ось як саме працював цей код:
- Спочатку ми використовували SELECT для вибору команди та суми балів
- Потім ми використовували WHERE , щоб відфільтрувати рядки, де була позиція “Охорона”
- Далі ми використали GROUP , щоб згрупувати результати за командами
- Далі ми використали HAVING для фільтрації команд із сумою балів > 50.
Ось як би виглядали результати цього запиту, якби ми не включили оператор HAVING :
proc sql ;
select team, sum(points) as sum_points
from my_data
where position='Guard'
group by team;
quit ;
Зверніть увагу, що сума очок команди Б не перевищувала 50.
Отже, коли ми використали оператор HAVING у попередньому прикладі, ми відфільтрували команду B, оскільки їх сума балів не перевищувала 50.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в SAS:
SAS: як використовувати оператор LIKE у PROC SQL
SAS: Як використовувати оператор IN у PROC SQL
SAS: як використовувати оператор WHERE у PROC SQL