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

MySQL में दोहराए गए ID वाले रो के Price का SUM करना

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);
  1. - MySQL में संबंधित डुप्लिकेट रिकॉर्ड का योग करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> ); Query OK, 0 rows affected (0.68 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Chris,50); Query OK, 1 row affected

  1. - MySQL क्वेरी: सकारात्मक मान वाली पंक्तियों के लिए TRUE लौटाएं

    समाधान IF() फंक्शन का उपयोग करके सकारात्मक मान के लिए TRUE (1), नकारात्मक के लिए FALSE (0) लौटाएं। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2038 (Value) VALUES (57), (-100), (-78), (78), (91), (-34); क्वेरी 0, TRUE, FALSE) AS Result FROM DemoTable2038; परिणाम +----+-------+--------+ | Id | Value

  1. - MySQL में GROUP BY HAVING से समान ID वाली पंक्तियों का SUM निकालें

    GROUP BY + HAVING = 2000; उदाहरण डेटा insert into demo84 values(1,2000), (1,2000), (2,1800), (2,2200), (3,1700); परिणाम: कुल ≥ 2000 वाले ID +------+-------+ | id | Total | +------+-------+ | 1 | 4000 | | 2  | 4000 | +------+-------+ ID 1: 2000+2000 = 4000 ID 2: 1800+2200 = 4000 I