عبارت HAVING

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Sql-menu.png
موارد آموزشی
۱خانه
۲مقدمه
۳دستور زبان
۴عبارت SELECT
۵عبارت SELECT DISTINCT
۶شرط WHERE
۷عملگرهای AND, OR, NOT
۸کلمهٔ کلیدی ORDER BY
۹عبارت INSERT INTO
۱۰مقدارهای NULL
۱۱عبارت UPDATE
۱۲عبارت DELETE
۱۳عبارت‌های TOP ،LIMIT یا ROWNUM
۱۴توابع MIN و MAX
۱۵توابع COUNT ،AVG و SUM
۱۶عملگر LIKE
۱۷کاراکترهای Wildcard
۱۸عملگر IN
۱۹عملگر BETWEEN
۲۰نام‌های مستعار (Aliases)
۲۱متصل کردن (Join)
۲۲کلمهٔ کلیدی INNER JOIN
۲۳کلمهٔ کلیدی LEFT JOIN
۲۴کلمهٔ کلیدی RIGHT JOIN
۲۵کلمهٔ کلیدی FULL OUTER JOIN
۲۶دستور Self JOIN
۲۷عملگر UNION
۲۸عبارت GROUP BY
۲۹عبارت HAVING
۳۰عملگر EXISTS
۳۱عملگرهای ANY و ALL
۳۲عبارت SELECT INTO
۳۳عبارت INSERT INTO SELECT
۳۴عبارت CASE
۳۵توابع NULL
۳۶Stored Procedure
۳۷یادداشت‌ها
بانک اطلاعاتی
مرجع
مثال‌ها

عبارت HAVING در SQL

عبارت HAVING به SQL اضافه شد زیرا کلمه کلیدی WHERE را نمی‌توان با توابع تجمیعی (به انگلیسی: Aggregate) استفاده کرد.[۱]

نحو HAVING
1 SELECT column_name(s)
2 FROM table_name
3 WHERE condition
4 GROUP BY column_name(s)
5 HAVING condition
6 ORDER BY column_name(s);

نسخه نمایشی بانک اطلاعاتی

در ادامه انتخابی از جدول “Customer” در بانک اطلاعاتی نمونه 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

مثال‌های HAVING در SQL

عبارت SQL زیر تعداد مشتری‌های هر کشور را لیست می‌کند. فقط کشورهایی را در نظر می‌گیرد که بیش از ۵ مشتری دارند:

مثال
1 SELECT COUNT(CustomerID), Country
2 FROM Customers
3 GROUP BY Country
4 HAVING COUNT(CustomerID) > 5;

عبارت SQL زیر تعداد مشتری‌های هر کشور را بطور مرتب از زیاد به کم (فقط شامل کشورهایی با بیش از ۵ مشتری) لیست می‌کند:

مثال
1 SELECT COUNT(CustomerID), Country
2 FROM Customers
3 GROUP BY Country
4 HAVING COUNT(CustomerID) > 5
5 ORDER BY COUNT(CustomerID) DESC;

نسخه نمایشی بانک اطلاعاتی

در ادامه انتخابی از جدول “Orders” در بانک اطلاعاتی نمونه 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

و انتخابی از جدول "Employees":

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....

مثال‌های HAVING بیشتر

عبارت SQL زیر همه کارمندهایی که بیش از ۱۰ سفارش ثبت کرده‌اند را لیست می‌کند:

مثال
1 SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
2 FROM (Orders
3 INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
4 GROUP BY LastName
5 HAVING COUNT(Orders.OrderID) > 10;

عبارت SQL زیر اگر کارمندهای "Davolio" یا "Fuller"بیش از ۲۵ سفارش ثبت کرده باشند، آنها را لیست می‌کند:

مثال
1 SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
2 FROM Orders
3 INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
4 WHERE LastName = 'Davolio' OR LastName = 'Fuller'
5 GROUP BY LastName
6 HAVING COUNT(Orders.OrderID) > 25;



منابع آموزشی