Mệnh đề HAVING được sử dụng cùng với mệnh đề GROUP BY trong SQL Server (Transact-SQL) để giới hạn nhóm các hàng được trả về, chỉ khi điều kiện được đáp ứng là ĐÚNG.
Cú pháp mệnh đề HAVING trong SQL Server
SELECT bieuthuc1, bieuthuc2, … bieuthuc_n,
ham_tong (bieuthuc)
FROM bang
[WHERE dieukien]
GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n
HAVING dieukie
n_having;
Tên biến hoặc giá trị biến
ham_tong
Có thể là các hàm như SUM, COUNT, MIN, MAX hoặc AVG.
bieuthuc1, bieuthuc2 ,. bieuthuc_n
Biểu thức không nằm trong hàm tổng và phải nằm trong mệnh đề GROUP BY.
WHERE dieukien
Tùy chọn. Các điều kiện mà bản ghi phải đáp ứng để được chọn.
ĐÃ CÓ dieukien_having
Đây là điều kiện bổ sung chỉ áp dụng cho tổng kết quả để giới hạn nhóm hàng được trả về. Chỉ các nhóm có điều kiện được đánh giá là ĐÚNG trong tập kết quả.
Ví dụ:sử dụng hàm SUM
SELECT bophan, SUM(soluong) AS 'Tong so luong'
FROM sanpham
GROUP BY bophan
HAVING SUM (soluong) > 1
00;
Ví dụ về mệnh đề HAVING ở trên sử dụng hàm SUM để trả về tên bộ phận và tổng số lượng (trong bộ phận liên quan). Mệnh đề HAVING sẽ lọc kết quả để chỉ những phần có số lớn hơn 100 được trả về.
Ví dụ:sử dụng hàm COUNT
SELECT thanhpho, COUNT (*) AS 'So nhanvien'
FROM nhanvien
WHERE bang = 'California'
GROUP BY thanhpho
HAVING COUN
T (*)> 20;
Ví dụ này quay lại thành phố và số lượng nhân viên (tại thành phố đó) hiện tại ở California. Điều khoản HAVING sẽ lọc để chỉ trả về các thành phố có hơn 20 nhân viên.
Ví dụ - sử dụng hàm MIN
SELECTbophan, MIN (luong) AS 'Luong thap nhat'
FROM nhanvien
GROUP BY bophan
HAVING MIN
(luong)> = 50000;
Trong ví dụ này, kết quả trả về là tên của từng bộ phận và mức lương tối thiểu trong từng bộ phận. Điều khoản HAVING sẽ chỉ trả lại các bộ phận có mức lương tối thiểu lớn hơn hoặc bằng 50.000 đô la.
Ví dụ:sử dụng hàm MAX
SELECT ho, MAX (luong) AS 'Luong cao nhat'
FROM nhanvien
GROUP BY bophan
HAVING MA
X (luong)> 34000;
Trong ví dụ cuối cùng này, kết quả là họ của nhân viên và mức lương tối đa cho giá trị của gia đình đó. Điều khoản HAVING chỉ giới hạn các giá trị mà họ có mức lương tối đa lớn hơn $ 34,000.