Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาผลรวม (SUM) สำหรับค่าที่ไม่ซ้ำ (DISTINCT) ในคอลัมน์อื่น MySQL


ใช้ฟังก์ชันรวม SUM() ร่วมกับ GROUP BY เพื่อหาผลรวมสำหรับค่าที่ไม่ซ้ำในคอลัมน์อื่น

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> CREATE TABLE SumOfEveryDistinct ( Id INT NOT NULL, Amount INT ); Query OK, 0 rows affected (0.59 sec)

เพิ่มข้อมูล (Id ซ้ำกัน มี Amount ต่างกัน):

mysql> INSERT INTO SumOfEveryDistinct VALUES(10,100); Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(11,200); Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(12,300); Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(10,400); Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(11,500); Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(12,600); Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(10,700); Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(11,800); Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO SumOfEveryDistinct VALUES(12,900); Query OK, 1 row affected (0.19 sec)

แสดงข้อมูล:

mysql> SELECT * FROM SumOfEveryDistinct;

ผลลัพธ์:

+----+--------+ | Id | Amount | +----+--------+ | 10 | 100    | | 11 | 200    | | 12 | 300    | | 10 | 400    | | 11 | 500    | | 12 | 600    | | 10 | 700    | | 11 | 800    | | 12 | 900    | +----+--------+ 9 rows in set (0.00 sec)

คำสั่ง SUM รวม GROUP BY:

mysql> SELECT Id, SUM(Amount) AS TotalSum FROM SumOfEveryDistinct GROUP BY Id;

ผลลัพธ์:

+----+----------+ | Id | TotalSum | +----+----------+ | 10 | 1200     | | 11 | 1500     | | 12 | 1800     | +----+----------+ 3 rows in set (0.00 sec)

แต่ละ Id ได้ผลรวม Amount ของตัวเอง: Id 10 = 100+400+700=1200, Id 11 = 200+500+800=1500, Id 12 = 300+600+900=1800