Phân biệt Where và Having trong SQL

Trong SQL, WHEREHAVING đều được sử dụng để lọc dữ liệu, tuy nhiên chúng có những điểm khác biệt quan trọng:

1. Vị trí sử dụng:

  • WHERE: được sử dụng trong mệnh đề SELECT trước GROUP BY. Mục đích của WHERE là lọc các dòng dữ liệu trước khi thực hiện phép tính tổng hợp.
  • HAVING: được sử dụng trong mệnh đề SELECT sau GROUP BY. Mục đích của HAVING là lọc các nhóm dữ liệu sau khi đã thực hiện phép tính tổng hợp.

2. Loại dữ liệu được lọc:

  • WHERE: có thể lọc dữ liệu dựa trên giá trị của bất kỳ cột nào trong bảng.
  • HAVING: chỉ có thể lọc dữ liệu dựa trên giá trị tổng hợp (SUM, COUNT, AVG, MIN, MAX,…) của các nhóm dữ liệu.

3. Ví dụ:

Giả sử bạn có bảng dữ liệu về nhân viên với các cột: id, name, department, salary.

  • WHERE: Lọc các nhân viên có mức lương cao hơn 10 triệu:
SQL
SELECT * FROM employees WHERE salary > 10000000;
  • HAVING: Lọc các bộ phận có tổng lương cao hơn 1 tỷ:
SQL
SELECT department, SUM(salary) AS total_salary
FROM employees
GROUP BY department
HAVING total_salary > 1000000000;

4. Tóm tắt:

Tính năng WHERE HAVING
Vị trí Trước GROUP BY Sau GROUP BY
Loại dữ liệu được lọc Cột Giá trị tổng hợp
Ví dụ Lọc dòng dữ liệu Lọc nhóm dữ liệu

Lưu ý:

  • Có thể sử dụng WHEREHAVING cùng nhau trong một câu truy vấn.
  • WHERE được sử dụng thường xuyên hơn HAVING.
Danh mục: SQL
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận