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

หาผลรวมจากเซลล์เฉพาะใน MySQL ใช้ WHERE กรองก่อน SUM()

เมื่อต้องการหาผลรวม (SUM) จากแถวที่ตรงเงื่อนไขเฉพาะ ให้ใช้ WHERE กรองแถวก่อน แล้วค่อยใช้ Aggregate Function SUM()

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

สร้างตารางคะแนนนักเรียน (มีชื่อซ้ำ):

mysql> create table DemoTable1370 (StudentName varchar(20), Marks int);
mysql> insert into DemoTable1370 values('Adam Smith',56),('Chris Brown',67),('Adam Smith',69),('David Miller',98),('John Smith',59),('Adam Smith',79),('Chris Brown',77);

ข้อมูลทั้งหมด:

+--------------+-------+
| StudentName  | Marks |
+--------------+-------+
| Adam Smith   | 56    |
| Chris Brown  | 67    |
| Adam Smith   | 69    |
| David Miller | 98    |
| John Smith   | 59    |
| Adam Smith   | 79    |
| Chris Brown  | 77    |
+--------------+-------+

คำสั่งหาผลรวมคะแนนของ Adam Smith เท่านั้น

mysql> select sum(Marks) AS Total from DemoTable1370 where StudentName='Adam Smith';

ผลลัพธ์ (56+69+79=204)

+-------+
| Total |
+-------+
| 204   |
+-------+

คำอธิบาย:

  • WHERE StudentName='Adam Smith' กรองแถวก่อน Aggregate
  • SUM(Marks) รวมเฉพาะแถวที่ผ่าน WHERE
  • ต่างจาก GROUP BY StudentName ที่จะให้ผลรวมทุกคนพร้อมกัน
  • ใช้ Index บน StudentName ได้ (ถ้ามี) ทำให้เร็ว
  • หากต้องการหลายคน: WHERE StudentName IN ('Adam Smith','Chris Brown')