Rate this post

Mệnh đề HAVING đặt điều kiện vào các nhóm được xác định bởi mệnh đề GROUP BY trong câu lệnh SELECT.

Mệnh đề SQL này được triển khai sau mệnh đề ‘GROUP BY’ trong câu lệnh ‘SELECT’.

Các bài viết liên quan:

Mệnh đề này được sử dụng trong SQL vì chúng ta không thể sử dụng mệnh đề WHERE với các hàm tổng hợp trong SQL. Cả hai mệnh đề WHERE và HAVING đều được sử dụng để lọc các bản ghi trong truy vấn SQL.

Sự khác biệt giữa mệnh đề HAVING và WHERE

Sự khác biệt giữa mệnh đề WHERE và HAVING trong cơ sở dữ liệu là câu hỏi quan trọng nhất được hỏi trong một cuộc phỏng vấn CNTT.

Bảng sau đây cho thấy sự so sánh giữa hai mệnh đề này, nhưng sự khác biệt chính là mệnh đề WHERE sử dụng điều kiện để lọc các bản ghi trước khi tạo bất kỳ nhóm nào, trong khi mệnh đề HAVING sử dụng điều kiện để lọc các giá trị từ một nhóm.

HAVINGWHERE
1. Mệnh đề HAVING được sử dụng trong hệ thống cơ sở dữ liệu để lấy dữ liệu / giá trị từ các nhóm theo điều kiện đã cho.1. Mệnh đề WHERE được sử dụng trong các hệ thống cơ sở dữ liệu để lấy dữ liệu / giá trị từ các bảng theo điều kiện đã cho.
2. Mệnh đề HAVING luôn được thực hiện cùng với mệnh đề GROUP BY.2. Mệnh đề WHERE có thể được thực thi mà không cần mệnh đề GROUP BY.
3. Mệnh đề HAVING có thể bao gồm các hàm tổng hợp SQL trong một truy vấn hoặc câu lệnh.3. Chúng ta không thể sử dụng hàm tổng hợp SQL với mệnh đề WHERE trong các câu lệnh.
4. Chúng ta chỉ có thể sử dụng câu lệnh SELECT với mệnh đề HAVING để lọc các bản ghi.4. Trong khi đó, chúng ta có thể dễ dàng sử dụng mệnh đề WHERE với các câu lệnh UPDATE, DELETE và SELECT.
5. Mệnh đề HAVING được sử dụng trong các truy vấn SQL sau mệnh đề GROUP BY.5. Mệnh đề WHERE luôn được sử dụng trước mệnh đề GROUP BY trong các truy vấn SQL.
6. Chúng ta có thể triển khai mệnh đề SQL này trong các phép toán cột.6. Chúng ta có thể triển khai mệnh đề SQL này trong các hoạt động hàng.
7. Nó là một bộ lọc sau.7. Nó là một bộ lọc trước.
8. Nó được sử dụng để lọc các nhóm.8. Nó được sử dụng để lọc các bản ghi duy nhất của bảng.

Cú pháp của mệnh đề HAVING trong SQL

Ví dụ về mệnh đề HAVING trong SQL

Trong bài viết này, chúng tôi đã lấy bốn ví dụ khác nhau sau đây sẽ giúp bạn cách sử dụng mệnh đề HAVING với các hàm tổng hợp SQL khác nhau:

Ví dụ 1: Hãy lấy bảng Nhân viên sau đây, giúp bạn phân tích mệnh đề HAVING với hàm tổng hợp SUM:

Emp_IdEmp_NameEmp_SalaryEmp_City
201Abhay2000Goa
202Ankit4000Delhi
203Bheem8000Jaipur
204 Ram2000Goa
205Sumit5000Delhi

Nếu bạn muốn thêm lương của nhân viên cho mỗi thành phố, bạn phải viết câu truy vấn sau:

Đầu ra của truy vấn trên hiển thị kết quả sau:

SUM(Emp_Salary)Emp_City
4000Goa
9000Delhi
8000Jaipur

Bây giờ, giả sử rằng bạn muốn hiển thị những thành phố có tổng tiền lương của nhân viên hơn 5000. Đối với trường hợp này, bạn phải nhập truy vấn sau với mệnh đề HAVING trong SQL:

Đầu ra của truy vấn SQL ở trên hiển thị bảng sau trong đầu ra:

SUM(Emp_Salary)Emp_City
9000Delhi
8000Jaipur

Ví dụ 2: Hãy lấy bảng Student_details sau đây, bảng này giúp bạn phân tích mệnh đề HAVING với hàm tổng hợp COUNT:

Roll_NoNameMarksAge
1Rithik9120
2Kapil6019
3Arun8217
4Ram9218
5Anuj5020
6Suman8818
7Sheetal5719
8Anuj6420

Giả sử, bạn muốn đếm số học sinh của bảng trên theo độ tuổi của các em. Đối với điều này, bạn phải viết truy vấn sau:

Truy vấn trên sẽ hiển thị kết quả sau:

Count(Roll_No)Age
320
219
117
218

Bây giờ, giả sử rằng bạn muốn hiển thị tuổi của những sinh viên có số cuộn nhiều hơn và bằng 2. Đối với trường hợp này, bạn phải nhập truy vấn sau với mệnh đề HAVING trong SQL:

Đầu ra của truy vấn SQL ở trên hiển thị bảng sau trong đầu ra:

Count(Roll_No)Age
320
219
218

Ví dụ 3: Hãy lấy bảng Nhân viên sau, bảng này giúp bạn phân tích mệnh đề HAVING với hàm tổng hợp MIN và MAX:

Emp_IDNameEmp_SalaryEmp_Dept
1001Anuj9000Finance
1002Saket4000HR
1003Raman3000Coding
1004Renu6000Coding
1005Seenu5000HR
1006Mohan10000Marketing
1007Anaya4000Coding
1008Parul8000Finance

Hàm MIN với mệnh đề HAVING:

Nếu bạn muốn hiển thị từng bộ phận và mức lương tối thiểu trong mỗi bộ phận, bạn phải viết câu truy vấn sau:

Đầu ra của truy vấn trên hiển thị kết quả sau:

MIN(Emp_Salary)Emp_Dept
8000Finance
4000HR
3000Coding
10000Marketing

Bây giờ, giả sử rằng bạn muốn chỉ hiển thị những phòng ban có mức lương tối thiểu của nhân viên lớn hơn 4000. Đối với trường hợp này, bạn phải nhập truy vấn sau với mệnh đề HAVING trong SQL:

Truy vấn SQL ở trên hiển thị bảng sau trong đầu ra:

MIN(Emp_Salary)Emp_Dept
8000Finance
10000Marketing

Hàm MAX với mệnh đề HAVING:

Trong bảng nhân viên trên, nếu bạn muốn liệt kê từng bộ phận và mức lương tối đa trong từng bộ phận. Đối với điều này, bạn phải viết truy vấn sau:

Truy vấn trên sẽ hiển thị kết quả sau:

MAX(Emp_Salary)Emp_Dept
9000Finance
5000HR
6000Coding
10000Marketing

Bây giờ, giả sử rằng bạn muốn chỉ hiển thị những phòng ban có mức lương tối đa của nhân viên dưới 8000. Đối với trường hợp này, bạn phải nhập truy vấn sau với mệnh đề HAVING trong SQL:

Đầu ra của truy vấn SQL ở trên hiển thị bảng sau trong đầu ra:

MAX(Emp_Salary)Emp_Dept
5000HR
6000Coding

Ví dụ 4: Hãy lấy bảng Employee_Dept sau, bảng này giúp bạn phân tích mệnh đề HAVING với hàm tổng hợp AVG:

Emp_IDNameEmp_SalaryEmp_Dept
1001Anuj8000Finance
1002Saket4000HR
1003Raman3000Coding
1004Renu6000Coding
1005Seenu5000HR
1006Mohan10000Marketing
1007Anaya4000Coding
1008Parul6000Finance

Nếu bạn muốn tìm mức lương trung bình của nhân viên trong từng bộ phận, bạn phải viết câu truy vấn sau:

Truy vấn trên sẽ hiển thị kết quả sau:

AVG(Emp_Salary)Emp_Dept
7000Finance
4500HR
6500Coding
10000Marketing

Bây giờ, giả sử rằng bạn muốn hiển thị những phòng ban có mức lương trung bình lớn hơn và bằng 6500. Đối với trường hợp này, bạn phải nhập truy vấn sau với mệnh đề HAVING trong SQL:

Truy vấn SQL ở trên sẽ hiển thị bảng sau trong đầu ra:

AVG(Emp_Salary)Emp_Dept
7000Finance
6500Coding
10000Marketing

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now