วิธีการใช้คำสั่ง HAVING ของ MySQL โดยที่ผลรวมมากกว่าเกณฑ์

Withi Kar Chi Kha Sang Having Khxng Mysql Doythi Phl Rwm Makkwa Kenth



เมื่อทำงานกับฐานข้อมูล MySQL คุณมักจะมีอินสแตนซ์ที่คุณต้องการกรองค่าต่างๆ แม้ว่าคุณจะสามารถใช้ส่วนคำสั่ง WHERE ได้ แต่ก็ใช้ไม่ได้กับทุกกรณี ส่วนคำสั่ง HAVING จะใช้เมื่อคุณต้องการดำเนินการค้นหาตัวกรองโดยใช้ฟังก์ชันรวมและใช้การจัดกลุ่ม

ส่วนคำสั่ง HAVING ขึ้นอยู่กับส่วนคำสั่ง GROUP BY ในตัวกรองและดำเนินการค้นหาตามเงื่อนไขที่ให้มา โดยจะจำกัดตัวกรองตามเงื่อนไขและส่งกลับเฉพาะกลุ่มที่เลือกหากตรงตามเงื่อนไข เรามีตัวอย่างการใช้ MySQL HAVING clause ที่ผลรวมเกินเกณฑ์ ด้วยวิธีนี้ คุณจะเชี่ยวชาญวิธีใช้ในตอนท้ายของโพสต์ของวันนี้







วิธีการใช้คำสั่ง HAVING ของ MySQL โดยที่ผลรวมมากกว่าเกณฑ์

คุณใช้ส่วนคำสั่ง MySQL HAVING กับส่วนคำสั่ง GROUP BY ไวยากรณ์เป็นดังนี้:



เลือก expression1, .. expression_n, aggregate_func (นิพจน์) จาก table_name จัดกลุ่มตามนิพจน์ HAVING ;

คุณสามารถใช้ฟังก์ชันรวมต่างๆ ได้ เช่น SUM(), COUNT(), MIN(), MAX() และ AVG() โปรดทราบว่านิพจน์ใดๆ ที่ไม่ได้ใช้กับฟังก์ชันการรวมจะต้องระบุด้วย GROUP BY clause



สำหรับเงื่อนไขนั้น จะใช้กับผลลัพธ์รวมที่คุณระบุเกณฑ์ที่คุณต้องการตรวจสอบกับเงื่อนไข ตัวอย่างเช่น คุณสามารถใช้ฟังก์ชัน SUM() และตรวจสอบว่านิพจน์ตรงตามเกณฑ์ 10 หรือไม่ เราจะทำความเข้าใจเพิ่มเติมเกี่ยวกับสิ่งนี้ในตัวอย่างที่ให้มา





เพื่อทำความเข้าใจว่า HAVING clause ทำงานอย่างไร มาสร้างฐานข้อมูลตัวอย่างที่เราจะทำงานร่วมกัน เราตั้งชื่อฐานข้อมูลของเราว่า “register”



เรามาสร้างตารางชื่อ “คนงาน” เพื่อบรรจุคอลัมน์และประเภทข้อมูลต่างๆ ของเรา ที่นี่ เราทำงานกับข้อมูลของพนักงาน เช่น ชื่อ ชั่วโมง วันทำงาน ฯลฯ

ด้วยการตรวจสอบคำอธิบายของตาราง เราสามารถยืนยันได้ว่าสร้างคอลัมน์ทั้งหมดสำเร็จแล้ว

เราใส่ค่าลงในตารางของเรา เรามีคนงานที่แตกต่างกันซึ่งทำงานในชั่วโมงและวันที่แตกต่างกัน การใช้ข้อมูลนี้ เราสามารถใช้คำสั่ง HAVING โดยที่ผลรวมเกินเกณฑ์

สำหรับตัวอย่างแรก ลองพิจารณากรณีที่เราต้องการหาพนักงานที่ทำงานนานที่สุด สำหรับประโยค HAVING ให้รวมฟังก์ชันรวมผลรวมเป็นชั่วโมง ใน GROUP BY clause เราจัดกลุ่มแถวโดยใช้แถวชื่อเพื่อช่วยจำแนกพนักงานที่มีชั่วโมงรวมมากกว่าเกณฑ์

หากเรามีเกณฑ์สำหรับชั่วโมงทั้งหมดเป็น 7 เราจะดำเนินการคำสั่งของเราดังนี้:

เลือกชื่อ, SUM(ชั่วโมง) AS total_hours_per_person จากคนงาน จัดกลุ่มตามชื่อ มีผลรวม(ชั่วโมง) > 7;

โดยการดำเนินการคำสั่ง เราได้รับเอาต์พุตที่มีสองแถว เนื่องจากมีเพียงคนงานสองคนเท่านั้นที่เกินขีดจำกัดที่ระบุไว้ในส่วนคำสั่ง HAVING

สมมติว่าเราต้องการจัดประเภทแผนกเพื่อดูแผนกที่มีพนักงานที่ทำงานในชั่วโมงที่มากกว่าเกณฑ์ 7 ชั่วโมง เราเลือกแผนก จากนั้นใช้ฟังก์ชันการรวม SUM กับชั่วโมงและจัดกลุ่มแถวโดยใช้นิพจน์แผนก

คำสั่งของเรามีดังนี้:

เลือกแผนก, SUM(ชั่วโมง) AS total_hours_per_department จากคนงาน จัดกลุ่มตามแผนกที่มีผลรวม(ชั่วโมง) > 7;

จากผลลัพธ์ เราสามารถยืนยันได้ว่าเราสามารถกรองแถวให้เหลือเฉพาะแถวที่มีผลรวมของชั่วโมงมากกว่าเกณฑ์ของเรา

ในทำนองเดียวกัน หากเราต้องการกรองวันที่ทำงานด้วยจำนวนผู้ปฏิบัติงานสูงสุดที่เกินเกณฑ์ 10 ชั่วโมง เราเลือกนิพจน์วันที่ทำงาน จากนั้น เราใช้ฟังก์ชัน SUM กับชั่วโมงและจัดกลุ่มแถวโดยใช้วันที่ทำงาน

คำสั่งมีดังนี้:

เลือกวันทำงาน, SUM(ชั่วโมง) AS maximum_hours_worked จากคนงาน จัดกลุ่มตามวันทำงานโดยมีผลรวม(ชั่วโมง) > 10;

หลังจากดำเนินการคำสั่ง ผลลัพธ์แสดงว่ามีเพียงหนึ่งวันทำงานเท่านั้นที่มีผลรวมของชั่วโมงทั้งหมดที่เกินขีดจำกัด:

บทสรุป

ส่วนคำสั่ง MySQL HAVING จะใช้เมื่อคุณต้องการเรียกใช้ตัวกรองแบบสอบถามโดยใช้ฟังก์ชันรวม มันถูกรวมเข้ากับ GROUP BY clause เพื่อดำเนินการค้นหาที่เฉพาะเจาะจงมากขึ้น โพสต์นี้ให้รายละเอียดทุกอย่างเกี่ยวกับ MySQL HAVING clause ที่ผลรวมมากกว่าเกณฑ์ ด้วยตัวอย่างที่ให้มา ตอนนี้คุณเข้าใจวิธีการทำงานกับ MySQL HAVING clause