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:

having

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ăngWHEREHAVING
Vị tríTrước GROUP BYSau GROUP BY
Loại dữ liệu được lọcCộtGiá trị tổng hợp
Ví dụLọc dòng dữ liệuLọ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.

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA), là người đang tập tành viết lách trên blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. #Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn cần người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
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