MySQL हैविंग क्लॉज
MySQL हैविंग क्लॉज
HAVING
क्लॉज को SQL में जोड़ा गया था क्योंकि
कीवर्ड WHERE
का उपयोग कुल कार्यों के साथ नहीं किया जा सकता है।
सिंटैक्स होना
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY
column_name(s);
डेमो डेटाबेस
नीचे नॉर्थविंड नमूना डेटाबेस में "ग्राहक" तालिका से चयन है:
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 के उदाहरण हैं
निम्न SQL कथन प्रत्येक देश में ग्राहकों की संख्या को सूचीबद्ध करता है। केवल 5 से अधिक ग्राहकों वाले देश शामिल करें:
उदाहरण
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
निम्न SQL कथन प्रत्येक देश में ग्राहकों की संख्या को सूचीबद्ध करता है, उच्च से निम्न तक क्रमबद्ध (केवल 5 से अधिक ग्राहकों वाले देश शामिल करें):
उदाहरण
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID)
> 5
ORDER BY COUNT(CustomerID) DESC;
डेमो डेटाबेस
नीचे नॉर्थविंड नमूना डेटाबेस में "आदेश" तालिका से चयन है:
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 |
और "कर्मचारी" तालिका से चयन:
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.... |
अधिक होने के उदाहरण
निम्न 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;
यदि कर्मचारी "डेवोलियो" या "फुलर" ने 25 से अधिक ऑर्डर पंजीकृत किए हैं, तो निम्न SQL कथन सूचीबद्ध करता है:
उदाहरण
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;