GROUP BY के साथ SUM() एग्रीगेट फंक्शन
एक ही ID वाली पंक्तियों के Price कॉलम का योग करने के लिए GROUP BY Id के साथ SUM(Price) का उपयोग करें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable850(Id INT, Price INT); Query OK, 0 rows affected (0.54 sec)
रिकॉर्ड्स इन्सर्ट करना (दोहराए गए ID के साथ)
mysql> INSERT INTO DemoTable850 VALUES
(1,90),(2,100),(2,50),(1,80),(1,60);
Query OK, 5 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable850;
+------+-------+ | Id | Price | +------+-------+ | 1 | 90 | | 2 | 100 | | 2 | 50 | | 1 | 80 | | 1 | 60 | +------+-------+ 5 rows in set (0.00 sec)
प्रत्येक ID के लिए Price का योग
mysql> SELECT Id, SUM(Price) FROM DemoTable850 GROUP BY Id;
परिणाम
+------+------------+ | Id | SUM(Price) | +------+------------+ | 1 | 230 | | 2 | 150 | +------+------------+ 2 rows in set (0.00 sec)
विशिष्ट ID के लिए योग (मूल लेख)
mysql> SELECT Id, SUM(Price) FROM DemoTable850 WHERE Id = 1;
परिणाम
+------+------------+ | Id | SUM(Price) | +------+------------+ | 1 | 230 | +------+------------+ 1 row in set (0.00 sec)
अन्य उपयोगी एग्रीगेशन
| फंक्शन | उद्देश्य |
|---|---|
SUM(Price) | कुल योग |
COUNT(*) | पंक्तियों की संख्या |
AVG(Price) | औसत |
MIN(Price) | न्यूनतम |
MAX(Price) | अधिकतम |
GROUP_CONCAT(Price) | सभी मानों की सूची |
STDDEV(Price) | मानक विचलन |
एकाधिक एग्रीगेशन एक साथ
SELECT Id,
SUM(Price) AS TotalPrice,
COUNT(*) AS OrderCount,
AVG(Price) AS AvgPrice,
MIN(Price) AS MinPrice,
MAX(Price) AS MaxPrice
FROM DemoTable850
GROUP BY Id;
परिणाम
+------+------------+------------+----------+----------+----------+ | Id | TotalPrice | OrderCount | AvgPrice | MinPrice | MaxPrice | +------+------------+------------+----------+----------+----------+ | 1 | 230 | 3 | 76.67 | 60 | 90 | | 2 | 150 | 2 | 75.00 | 50 | 100 | +------+------------+------------+----------+----------+----------+
HAVING से ग्रुप फ़िल्टर करना
-- केवल वे ID जिनका कुल 200 से अधिक है SELECT Id, SUM(Price) FROM DemoTable850 GROUP BY Id HAVING SUM(Price) > 200;
विंडो फंक्शन (MySQL 8.0+) - बिना ग्रुपिंग के
SELECT Id, Price,
SUM(Price) OVER (PARTITION BY Id) AS TotalPerId
FROM DemoTable850;
प्रदर्शन टिप
GROUP BY कॉलम पर इंडेक्स बनाएं:
CREATE INDEX idx_id ON DemoTable850(Id);