เมื่อต้องการหาผลรวม (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'กรองแถวก่อน AggregateSUM(Marks)รวมเฉพาะแถวที่ผ่าน WHERE- ต่างจาก
GROUP BY StudentNameที่จะให้ผลรวมทุกคนพร้อมกัน - ใช้ Index บน
StudentNameได้ (ถ้ามี) ทำให้เร็ว - หากต้องการหลายคน:
WHERE StudentName IN ('Adam Smith','Chris Brown')