Điều khoản CÓ của MySQL
Điều khoản HAVING của MySQL
Mệnh đề HAVING
đã được thêm vào SQL vì từ khóa WHERE
không thể được sử dụng với các hàm tổng hợp.
CÓ Cú pháp
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY
column_name(s);
Cơ sở dữ liệu demo
Dưới đây là lựa chọn từ bảng "Khách hàng" trong cơ sở dữ liệu mẫu Northwind:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
MySQL CÓ ví dụ
Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia. Chỉ bao gồm các quốc gia có nhiều hơn 5 khách hàng:
Ví dụ
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
Hãy tự mình thử »Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia, được sắp xếp từ cao xuống thấp (Chỉ bao gồm các quốc gia có nhiều hơn 5 khách hàng):
Ví dụ
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID)
> 5
ORDER BY COUNT(CustomerID) DESC;
Hãy tự mình thử » Cơ sở dữ liệu demo
Dưới đây là lựa chọn từ bảng "Đơn hàng" trong cơ sở dữ liệu mẫu Northwind:
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10248 | 90 | 5 | 1996-07-04 | 3 |
10249 | 81 | 6 | 1996-07-05 | 1 |
10250 | 34 | 4 | 1996-07-08 | 2 |
Và một lựa chọn từ bảng "Nhân viên":
EmployeeID | LastName | FirstName | BirthDate | Photo | Notes |
---|---|---|---|---|---|
1 | Davolio | Nancy | 1968-12-08 | EmpID1.pic | Education includes a BA.... |
2 | Fuller | Andrew | 1952-02-19 | EmpID2.pic | Andrew received his BTS.... |
3 | Leverling | Janet | 1963-08-30 | EmpID3.pic | Janet has a BS degree.... |
Thêm ví dụ CÓ
Câu lệnh SQL sau liệt kê các nhân viên đã đăng ký hơn 10 đơn hàng:
Ví dụ
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM
(Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;
Hãy tự mình thử »Câu lệnh SQL sau liệt kê nếu nhân viên "Davolio" hoặc "Fuller" đã đăng ký hơn 25 đơn hàng:
Ví dụ
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING
COUNT(Orders.OrderID) > 25;
Hãy tự mình thử »