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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *