ตาราง salary_history บันทึกการเปลี่ยนแปลงเงินเดือน มีคอลัมน์ emp_id, salary, change_date ต้องการหาเงินเดือนล่าสุดของแต่ละพนักงาน ข้อใดใช้ได้ถูกต้อง
กSELECT emp_id, salary FROM salary_history WHERE change_date = MAX(change_date);
ขSELECT sh1.emp_id, sh1.salary FROM salary_history sh1 WHERE sh1.change_date = (SELECT MAX(sh2.change_date) FROM salary_history sh2 WHERE sh2.emp_id = sh1.emp_id);
คSELECT emp_id, salary FROM salary_history ORDER BY change_date DESC LIMIT 1;
งSELECT emp_id, MAX(salary) FROM salary_history GROUP BY emp_id;
เฉลยอธิบาย
ตัวเลือก B เป็น correlated subquery ที่หา MAX(change_date) แยกตาม emp_id ตัวเลือก A ใช้ aggregate ใน WHERE ไม่ได้ตามรูปนี้ ตัวเลือก C คืนล่าสุดเพียงแถวเดียวของทั้งตาราง และ D หาเงินเดือนสูงสุดไม่ใช่รายการล่าสุด หากวันซ้ำควรกำหนดตัวตัดสินเพิ่ม