Web Cơ Bản

Tìm hiểu mệnh đề HAVING trong MySQL

- Trong hệ quản trị cơ sở dữ liệu MySQL, mệnh đề HAVING thường được sử dụng thay thế cho mệnh đề WHERE khi điều kiện chọn lọc dữ liệu có nhắc đến các hàm tính toán tổng hợp như: COUNT, SUM, MIN, MAX, AVG, . . . .

- Để sử dụng mệnh đề HAVING thì chúng ta dùng cú pháp như sau:

SELECT column_name(s)
FROM table_name
GROUP BY column_name
HAVING condition;

MỘT SỐ VÍ DỤ

- Trong bài học này, tôi sẽ sử dụng cái bảng Customers như bên dưới để làm một số ví dụ minh họa.

CustomerIDCustomerNameCity
1Nguyễn Thành NhânCần Thơ
2Phạm Minh CươngAn Giang
3Hà Thị Cẩm VânSóc Trăng
4Trần Thị Tuyết NgaHậu Giang
5Vũ Tùng LâmCần Thơ
6Phạm Thị Hải NgânNinh Thuận
7Nguyễn Ngọc Ánh NhiVĩnh Long
8Trương Nữ Ngọc DiễmBạc Liêu
9Phạm Thị Diệu HươngCần Thơ
10Trần Phương AnhVĩnh Long
11Nguyễn Thị Hải YếnTiền Giang
12Mai Thị Lan PhươngSóc Trăng
13Hoàng Nghĩa TuyềnTrà Vinh
14Đặng Phước TrungSóc Trăng
15Nguyễn Huyền HươngVị Thanh
16Lê Văn ThơmSóc Trăng
Ví dụ 1:

- Liệt kê những thành phố có nhiều hơn hoặc bằng 2 khách hàng.

SELECT City, COUNT(CustomerID) AS NumberOfCustomers
FROM Customers
GROUP BY City
HAVING COUNT(CustomerID) >= 2;

- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:

City NumberOfCustomers
Cần Thơ 3
Sóc Trăng 4
Vĩnh Long 2
Ví dụ 2:

- Liệt kê những thành phố có nhiều hơn hoặc bằng 2 khách hàng.

(sắp xếp các thành phố theo thứ tự giảm dần của số lượng khách hàng)

SELECT City, COUNT(CustomerID) AS NumberOfCustomers
FROM Customers
GROUP BY City
HAVING COUNT(CustomerID) >= 2
ORDER BY NumberOfCustomers DESC;

- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:

City NumberOfCustomers
Sóc Trăng 4
Cần Thơ 3
Vĩnh Long 2