คำสั่ง HAVING ใช้ใน SQL เพื่อกรองผลลัพธ์ที่ได้จากการจัดกลุ่ม (GROUP BY) โดยเฉพาะเมื่อเราต้องการกรองค่าที่ได้จากฟังก์ชันกลุ่ม เช่น
SUM()AVG()COUNT()MAX(),MIN()
HAVING ทำหน้าที่คล้ายกับ WHERE แต่ต่างกันที่ WHERE ใช้ก่อนการจัดกลุ่ม, ส่วน HAVING ใช้หลังจากจัดกลุ่ม
รูปแบบคำสั่ง
SELECT column, AGGREGATE_FUNCTION(column)
FROM table
GROUP BY column
HAVING condition;
ตัวอย่างการใช้งาน
แสดงลูกค้าที่มียอดการชำระเงินรวมเกิน 100
SQL
SELECT customer_id, SUM(amount) AS total_paid
FROM payment
GROUP BY customer_id
HAVING total_paid > 100;GROUP BY customer_idจัดกลุ่มตามรหัสลูกค้าSUM(amount)รวมยอดชำระเงินของแต่ละคนHAVING total_paid > 100แสดงเฉพาะคนที่จ่ายเกิน 100
แสดงประเภทเรตติ้งหนังที่มีหนังมากกว่า 180 เรื่อง
SQL
SELECT rating, COUNT(*) AS total_movies
FROM film
GROUP BY rating
HAVING total_movies > 180;- แสดงเฉพาะเรตติ้งที่มีหนังจำนวนมากกว่า 180 เรื่อง
