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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *