MAX() और GROUP BY के साथ प्रति आईडी उच्चतम स्कोर प्राप्त करना
इसके लिए एग्रीगेट फंक्शन MAX() का उपयोग करें। पहले टेबल बनाएं:
mysql> create table DemoTable1383 ( Id int, PlayerScore int ); Query OK, 0 rows affected (0.90 sec)
रिकॉर्ड डालें:
mysql> insert into DemoTable1383 values(200,78); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1383 values(200,89); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1383 values(200,89); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1383 values(200,87); Query OK, 1 row affected (0.29 sec) mysql> insert into DemoTable1383 values(203,97); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable1383 values(200,57); Query OK, 1 row affected (0.17 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1383;
आउटपुट:
+------+-------------+ | Id | PlayerScore | +------+-------------+ | 200 | 78 | | 200 | 89 | | 200 | 89 | | 200 | 87 | | 203 | 97 | | 200 | 57 | +------+-------------+ 6 rows in set (0.00 sec)
उच्चतम स्कोर खोजने और विशिष्ट मान प्रदर्शित करने की क्वेरी:
mysql> select Id, max(PlayerScore) from DemoTable1383 group by Id order by max(PlayerScore) DESC;
परिणाम:
+------+------------------+ | Id | max(PlayerScore) | +------+------------------+ | 203 | 97 | | 200 | 89 | +------+------------------+ 2 rows in set (0.00 sec)
व्याख्या: GROUP BY Id प्रत्येक आईडी के लिए अधिकतम स्कोर की गणना करता है। ORDER BY MAX(PlayerScore) DESC परिणामों को उच्चतम से निम्नतम क्रम में सॉर्ट करता है। शीर्ष दो पंक्तियां (आईडी 203 के लिए 97 और आईडी 200 के लिए 89) लौटाई जाती हैं। ध्यान दें: यह प्रति आईडी शीर्ष स्कोर दिखाता है, न कि समग्र शीर्ष 2 स्कोर।