किसी कॉलम (जैसे Class) के डुप्लिकेट मान वाले समूहों में से दूसरे कॉलम (जैसे Amount) का न्यूनतम मान प्राप्त करने के लिए GROUP BY और MIN() एग्रीगेट फ़ंक्शन का उपयोग करें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1875 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Class VARCHAR(20),
Amount INT
);
डेटा डालें
mysql> INSERT INTO DemoTable1875(Class, Amount) VALUES('X', 750), ('X', 140), ('X', 450), ('Y', 6780), ('Z', 1350), ('Z', 2050);
प्रति क्लास न्यूनतम Amount
mysql> SELECT Class, MIN(Amount) FROM DemoTable1875 GROUP BY Class;
आउटपुट:
+-------+-------------+ | Class | MIN(Amount) | +-------+-------------+ | X | 140 | | Y | 6780 | | Z | 1350 | +-------+-------------+
व्याख्या
GROUP BY Class→ X, Y, Z तीन समूह।MIN(Amount)→ प्रत्येक समूह में न्यूनतम Amount।
अन्य एग्रीगेट फ़ंक्शन
| फ़ंक्शन | उद्देश्य |
|---|---|
MAX() | अधिकतम मान |
SUM() | कुल योग |
AVG() | औसत |
COUNT() | पंक्ति गणना |
पूरी पंक्ति प्राप्त करें (न्यूनतम Amount वाली)
SELECT t1.* FROM DemoTable1875 t1
JOIN (
SELECT Class, MIN(Amount) AS MinAmt FROM DemoTable1875 GROUP BY Class
) t2 ON t1.Class = t2.Class AND t1.Amount = t2.MinAmt;
नोट
- यदि न्यूनतम मान एक से अधिक पंक्तियों में है, तो सभी लौटाई जाएंगी।
- MySQL 8.0+ में
ROW_NUMBER() OVER (PARTITION BY Class ORDER BY Amount)उपयोग कर सकते हैं।