HAVING ใน SQL

HAVING เป็นคำสั่งที่ใช้กับ SQL ในการกรอง (filter) แถวของข้อมูลจากผลลัพธ์ของ GROUP BY โดย HAVING จะทำงานต่อจาก GROUP BY โดยจะกรองแถวที่ไม่ตรงเงื่อนไขที่ระบุใน HAVING ออกไป

ตัวอย่างเช่น หากต้องการหาจำนวนผู้ซื้อที่มียอดซื้อสูงกว่า 5000 บาท จากตาราง orders โดยจะแยกกลุ่มข้อมูลตามวันที่สั่งซื้อ (order_date) และที่อยู่ลูกค้า (customer_address) และเรียงลำดับจำนวนผู้ซื้อในแต่ละกลุ่มจากมากไปน้อย สามารถเขียน SQL statement ดังนี้:


SELECT order_date, customer_address, COUNT(*) as num_buyers, SUM(total_price) as total_sales
FROM orders
GROUP BY order_date, customer_address
HAVING SUM(total_price) > 5000
ORDER BY num_buyers DESC;


ใน SQL statement นี้ เราใช้ GROUP BY เพื่อแยกกลุ่มข้อมูลตาม order_date และ customer_address และ COUNT(*) นับจำนวนผู้ซื้อในแต่ละกลุ่ม และ SUM(total_price) คำนวณยอดซื้อรวมของแต่ละกลุ่ม จากนั้นเราใช้ HAVING ว่ายอดซื้อรวมของแต่ละกลุ่มต้องมากกว่า 5000 บาท โดยจะแสดงผลลัพธ์เฉพาะกลุ่มที่มียอดซื้อสูงกว่า 5000 บาทเท่านั้น ส่วน ORDER BY เราจะเรียงลำดับจำนวนผู้ซื้อในแต่ละกลุ่มจากมากไปน้อย นั่นคือ เราสามารถใช้ HAVING เพื่อกรองแถวของข้อมูลก่อนที่จะเรียงลำดับด้วย ORDER BY ได้ตามต้องการครับ

0
266