Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में कंडीशनल GROUP BY से मैक्सिमम वैल्यू कैसे प्राप्त करें?

GROUP BY और MAX() से कंडीशनल ग्रुपिंग

डुप्लीकेट नाम वाले रिकॉर्ड्स में से प्रत्येक नाम की अधिकतम (मैक्सिमम) वैल्यू प्राप्त करने के लिए GROUP BY के साथ MAX() एग्रीगेट फंक्शन का उपयोग करें।

टेबल बनाना और डेटा इन्सर्ट करना

CREATE TABLE DemoTable (
    StudentName VARCHAR(40),
    StudentMarks INT
);

INSERT INTO DemoTable VALUES('John', 78);
INSERT INTO DemoTable VALUES('Chris', 48);
INSERT INTO DemoTable VALUES('John', 67);
INSERT INTO DemoTable VALUES('Chris', 89);

मौजूदा डेटा (डुप्लीकेट नाम)

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| John        | 78           |
| Chris       | 48           |
| John        | 67           |
| Chris       | 89           |
+-------------+--------------+

क्वेरी: प्रत्येक स्टूडेंट के मैक्सिमम मार्क्स

SELECT StudentName, MAX(StudentMarks) AS StudentMarks 
FROM DemoTable 
GROUP BY StudentName;

आउटपुट

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| John        | 78           |
| Chris       | 89           |
+-------------+--------------+

कैसे काम करता है

  • GROUP BY StudentName - एक ही नाम के रो को एक ग्रुप में जोड़ता है
  • MAX(StudentMarks) - प्रत्येक ग्रुप में सबसे बड़ा मान चुनता है
  • परिणाम: प्रत्येक यूनिक नाम के लिए एक रो, उसके मैक्सिमम मार्क्स के साथ

अन्य एग्रीगेट फंक्शन्स के साथ

SELECT 
    StudentName,
    MAX(StudentMarks) AS HighestMarks,
    MIN(StudentMarks) AS LowestMarks,
    AVG(StudentMarks) AS AverageMarks,
    COUNT(*) AS Attempts
FROM DemoTable 
GROUP BY StudentName;
+-------------+--------------+-------------+--------------+----------+
| StudentName | HighestMarks | LowestMarks | AverageMarks | Attempts |
+-------------+--------------+-------------+--------------+----------+
| John        | 78           | 67          | 72.5         | 2        |
| Chris       | 89           | 48          | 68.5         | 2        |
+-------------+--------------+-------------+--------------+----------+

कंडीशनल एग्रीगेशन (CASE के साथ)

SELECT StudentName,
    MAX(CASE WHEN Subject = 'Math' THEN Marks END) AS MathMax,
    MAX(CASE WHEN Subject = 'Science' THEN Marks END) AS ScienceMax
FROM StudentMarks
GROUP BY StudentName;

नोट

MySQL 8.0+ में विंडो फंक्शन ROW_NUMBER() से अधिक जटिल कंडीशनल लॉजिक लागू कर सकते हैं।

  1. - MySQL में ORDER BY FIELD को GROUP BY के साथ एकल क्वेरी में कैसे उपयोग करें

    इसके लिए, आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable ( Message text ); Query OK, 0 rows affected (1.15 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Good); Query OK, 1 row affected (0.43 sec) mysql> insert into Demo

  1. - MySQL में GROUP BY में MIN/MAX सबक्वेरी से समूह प्रतिनिधि पंक्ति चुनें

    MySQL में GROUP BY के साथ प्रत्येक समूह से एक विशिष्ट पंक्ति (जैसे न्यूनतम ID वाली) चुनने के लिए सबक्वेरी में MIN() या MAX() का उपयोग करें। उदाहरण: प्रत्येक अंक समूह से न्यूनतम StudentId वाली पंक्ति 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO DemoTable1572 VALUES(4, 79, Bob); -- समान अंक 79 3.

  1. Android ग्रुप मैसेजिंग मास्टर करें: चरण-दर-चरण गाइड Android ग्रुप मैसेजिंग मास्टर करें: चरण-दर-चरण गाइड

    ग्रुप मैसेजिंग, जिसे ग्रुप टेक्सटिंग भी कहा जाता है, यूजर्स को सेलुलर नेटवर्क के उपयोग के माध्यम से लोगों के समूह के साथ संवाद करने की अनुमति देता है, न कि इंटरनेट के माध्यम से। हालांकि आजकल इंटरनेट-आधारित ग्रुप चैट एप्लिकेशन लोकप्रिय हैं, जैसे WhatsApp और Facebook Messenger, फिर भी कई लोग ग्रुप मैस