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