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