</>
⌕
Junior #group-by#having#aggregate

WHERE và HAVING khác nhau thế nào?

⚡ Trả lời nhanh

WHERE lọc từng dòng trước khi GROUP BY nên không dùng được hàm tổng hợp; HAVING lọc các nhóm sau khi GROUP BY nên dùng được COUNT, SUM, AVG. Nên lọc sớm bằng WHERE để giảm số dòng phải gom nhóm.

-- Khách có > 5 đơn trong năm 2025
SELECT user_id, COUNT(*) AS n, SUM(total) AS revenue
FROM orders
WHERE created_at >= '2025-01-01'   -- lọc dòng trước
GROUP BY user_id
HAVING COUNT(*) > 5;               -- lọc nhóm sau
WHEREHAVING
Lọc trêntừng dòngtừng nhóm
Chạytrước GROUP BYsau GROUP BY
Dùng aggregateKhôngCó
🃏 Ôn bằng flashcard