इसके लिए GROUP BY HAVING क्लॉज का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable782 ( Name varchar(100), Score int ); Query OK, 0 rows affected (1.18 sec)
इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable782 values('John',156);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable782 values('Carol',250);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable782 values('Bob',140);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('John',126);
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable782 values('John',140);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('Bob',280);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('Bob',250);
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable782 values('Carol',189);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('Carol',299);
Query OK, 1 row affected (0.21 sec)
सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> select * from DemoTable782;
यह निम्नलिखित आउटपुट देगा:
+-------+-------+ | Name | Score | +-------+-------+ | John | 156 | | Carol | 250 | | Bob | 140 | | John | 126 | | John | 140 | | Bob | 280 | | Bob | 250 | | Carol | 189 | | Carol | 299 | +-------+-------+ 9 rows in set (0.00 sec)
कॉलम द्वारा समूहित करें और समान मानों का योग प्रदर्शित करने की क्वेरी (कुल > 500)
mysql> select Name, SUM(Score) AS Total from DemoTable782 group by Name HAVING Total > 500;
यह निम्नलिखित आउटपुट देगा:
+-------+-------+ | Name | Total | +-------+-------+ | Carol | 738 | | Bob | 670 | +-------+-------+ 2 rows in set (0.00 sec)
WHERE और HAVING में अंतर
WHEREपंक्तियों को समूहित करने से पहले फ़िल्टर करता हैHAVINGसमूहित परिणामों को फ़िल्टर करता है (एग्रीगेट फ़ंक्शन के बाद)HAVING Total > 500केवल उन समूहों को दिखाता है जिनका कुल स्कोर 500 से अधिक है- John का कुल 422 है (156+126+140), इसलिए वह परिणाम में नहीं आता