ต้องการแสดงเฉพาะแผนกที่มียอดรายการสถานะ paid รวมเกิน 100000 จากตาราง payments(dept_id, status, amount) โครงสร้างคำสั่งใดถูกต้อง

WHERE status = 'paid' AND SUM(amount) > 100000 GROUP BY dept_id
WHERE status = 'paid' GROUP BY dept_id HAVING SUM(amount) > 100000
GROUP BY dept_id WHERE status = 'paid' AND amount > 100000
HAVING status = 'paid' WHERE SUM(amount) > 100000 GROUP BY dept_id

เฉลยอธิบาย

WHERE ต้องกรองแถวให้เหลือสถานะ paid ก่อน จากนั้น GROUP BY รวมแถวตามแผนก และ HAVING กรองกลุ่มด้วย SUM(amount) เกินเกณฑ์ จึงต้องใช้ลำดับและหน้าที่ตามข้อ B การวาง SUM ใน WHERE หรือสลับลำดับ clause ไม่ถูกต้อง

ข้อสอบอื่นในวิชาการใช้ภาษา SQL

ดูข้อสอบวิชานี้ทั้งหมด →