Mức cần: truy vấn và kiểm chứng dữ liệu, không phải tối ưu hay thiết kế cơ sở dữ liệu. Mục đích là tự trả lời được câu hỏi nghiệp vụ thay vì chờ dev chạy giúp.
Phần kiến thức thường bị hỏi:
- SELECT kèm WHERE, ORDER BY, LIMIT.
- GROUP BY với các hàm tổng hợp, và HAVING khác WHERE ở chỗ nào.
- Các loại JOIN, đặc biệt là khác biệt giữa INNER JOIN và LEFT JOIN — đây là câu hỏi hay gặp nhất.
- NULL và cách nó ảnh hưởng tới điều kiện lọc và hàm tổng hợp.
- DISTINCT, UNION khác UNION ALL.
- Khái niệm khoá chính, khoá ngoại, quan hệ một-nhiều và nhiều-nhiều.
Ví dụ dạng bài hay được đưa ra:
-- Đếm số đơn và tổng tiền theo từng khách trong tháng, kể cả khách không có đơn
SELECT c.customer_id, c.name, COUNT(o.order_id) AS order_count,
COALESCE(SUM(o.total), 0) AS revenue
FROM customers c
LEFT JOIN orders o
ON o.customer_id = c.customer_id
AND o.created_at >= DATE '2026-09-01'
AND o.created_at < DATE '2026-10-01'
GROUP BY c.customer_id, c.name
ORDER BY revenue DESC;Lưu ý: chi tiết hay bị hỏi lại ở ví dụ trên là vì sao điều kiện thời gian đặt trong ON chứ không đặt ở WHERE — đặt ở WHERE sẽ biến LEFT JOIN thành INNER JOIN và làm mất nhóm khách không có đơn.
Khoảng thời gian cũng viết dạng nửa mở (>= đầu tháng, < đầu tháng sau) thay vì BETWEEN, để không phụ thuộc vào phần giờ-phút-giây của cột.