دستور having در SQL
به دلیل اینکه نمیتوانیم از توابع در SQL برای شرط where استفاده کنیم با دستور having این کار را انجام می دهیم.
دقت داشته باشید که کار با دستور group by
و order by
را برای درک بهتر این دستور یاد داشته باشد.
نحوه استفاده از دستور having در SQL
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
مثال برای having در SQL
دستور SQL زیر تعداد مشتریان هر کشور را لیست می کند.
فقط شامل کشورهایی می شود که بیش از 5 مشتری ( customer )
را دارند.
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
دستور SQL زیر تعداد مشتریان هر کشور را با عبارت DESC
طبقه بندی کرده است که از بالا به پایین طبقه بندی و لیست می شوند (فقط شامل کشورهایی با بیش از 5 مشتری می شود):
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;
مثال های بیشتر برای عبارت having
دستور SQL زیر کارمندانی را که بیش از 10 سفارش ثبت کرده اند فهرست می کند:
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;
اگر کارکنان با نام های خانوادگی "Boronsi"
یا "Asghar Zadeh"
بیش از 25 سفارش ثبت کرده باشند ، دستور SQL زیر فهرست می شود:
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Boronsi' OR LastName = 'Asghar Zadeh'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
آیا این مطلب برای شما مفید بود ؟