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 в предыдущем примере, мы отфильтровали команду Б, поскольку их сумма очков не превышала 50.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:

SAS: как использовать оператор LIKE в PROC SQL
SAS: как использовать оператор IN в PROC SQL
SAS: как использовать оператор WHERE в PROC SQL

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *