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 لتصفية الصفوف حيث كان الموضع “Guard”
  • بعد ذلك، استخدمنا GROUP لتجميع النتائج حسب الفريق
  • بعد ذلك، استخدمنا HAVING لتصفية الفرق التي لديها مجموع نقاط > 50.

إليك الشكل الذي كانت ستبدو عليه نتائج هذا الاستعلام إذا لم نقم بتضمين عبارة HAVING :

 proc sql ;
    select team, sum(points) as sum_points
    from my_data
    where position='Guard'
    group by team;
quit ; 

لاحظ أن مجموع نقاط الفريق B لم يكن أكثر من 50.

لذلك عندما استخدمنا عبارة HAVING في المثال السابق، قمنا بتصفية الفريق B نظرًا لأن مجموع نقاطه لم يكن أكبر من 50.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في SAS:

SAS: كيفية استخدام عامل التشغيل LIKE في PROC SQL
SAS: كيفية استخدام عامل التشغيل IN في PROC SQL
SAS: كيفية استخدام عامل التشغيل WHERE في PROC SQL

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *