ฟังก์ชัน SUM() คืออะไร?
หลังจากที่เราได้เรียนรู้การนับจำนวนแถวด้วยฟังก์ชัน COUNT() กันไปแล้ว ในบทนี้เราจะมาทำความรู้จักกับฟังก์ชัน SUM() ซึ่งเป็นฟังก์ชันที่ใช้ในการหาผลรวมของค่าในคอลัมน์ที่กำหนดไว้
ฟังก์ชัน SUM() มีประโยชน์อย่างมากในการวิเคราะห์ข้อมูล เช่น การหาผลรวมยอดขายทั้งหมด, การหาผลรวมจำนวนสินค้าคงคลัง หรือการหาผลรวมคะแนนสอบของนักเรียน
รูปแบบการใช้งาน SUM(column_name)
รูปแบบการใช้งานฟังก์ชัน SUM() นั้นง่ายมาก เพียงแค่ระบุชื่อคอลัมน์ที่เราต้องการหาผลรวมไว้ในวงเล็บ ดังนี้
SELECT SUM(column_name) FROM table_name;
โดย column_name คือชื่อคอลัมน์ที่เราต้องการหาผลรวม และ table_name คือชื่อตารางที่คอลัมน์นั้นอยู่
ข้อสำคัญ: คอลัมน์ที่ใช้กับฟังก์ชัน SUM() จะต้องเป็นชนิดข้อมูลตัวเลขเท่านั้น (เช่น INT, DECIMAL, FLOAT) หากเป็นชนิดข้อมูลอื่น เช่น VARCHAR หรือ DATE จะไม่สามารถใช้ฟังก์ชัน SUM() ได้
ตัวอย่างการใช้งาน SUM()
สมมติว่าเรามีตาราง products ที่เก็บข้อมูลเกี่ยวกับสินค้า โดยมีคอลัมน์ price เก็บราคาสินค้า และคอลัมน์ quantity เก็บจำนวนสินค้าคงเหลือ
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(255),
price DECIMAL(10, 2),
quantity INT
);
INSERT INTO products (id, name, price, quantity) VALUES
(1, 'เสื้อยืด', 250.00, 100),
(2, 'กางเกงยีนส์', 750.00, 50),
(3, 'รองเท้าผ้าใบ', 1200.00, 30),
(4, 'กระเป๋า', 500.00, 75);
ถ้าเราต้องการหาราคาสินค้าทั้งหมดที่มีอยู่ในคลัง เราสามารถใช้ฟังก์ชัน SUM() ได้ดังนี้
SELECT SUM(price * quantity) AS total_value FROM products;
ผลลัพธ์ที่ได้จะเป็นดังนี้
+-------------+
| total_value |
+-------------+
| 120250.00 |
+-------------+
1 row in set (0.00 sec)
จากตัวอย่าง เราได้นำราคา (price) มาคูณกับจำนวน (quantity) ก่อน แล้วจึงใช้ฟังก์ชัน SUM() เพื่อหาผลรวมของราคาสินค้าทั้งหมด ซึ่งก็คือ 120,250 บาท
ข้อสังเกต: เราใช้ AS total_value เพื่อตั้งชื่อให้กับคอลัมน์ผลลัพธ์ เพื่อให้ง่ายต่อการอ่านและการนำไปใช้งานต่อ
การใช้งาน SUM() ร่วมกับ GROUP BY
ฟังก์ชัน SUM() มักถูกใช้ร่วมกับ GROUP BY เพื่อหาผลรวมของข้อมูลที่ถูกจัดกลุ่มตามเงื่อนไขที่กำหนด ตัวอย่างเช่น ถ้าเราต้องการหาราคาสินค้าทั้งหมดของแต่ละประเภท เราสามารถทำได้ดังนี้ (สมมติว่าเราเพิ่มคอลัมน์ category ในตาราง products)
ALTER TABLE products ADD COLUMN category VARCHAR(255);
UPDATE products SET category = 'เสื้อผ้า' WHERE id IN (1, 2);
UPDATE products SET category = 'รองเท้า' WHERE id = 3;
UPDATE products SET category = 'เครื่องประดับ' WHERE id = 4;
SELECT category, SUM(price * quantity) AS total_value
FROM products
GROUP BY category;
ผลลัพธ์ที่ได้จะเป็นดังนี้
+---------------+-------------+
| category | total_value |
+---------------+-------------+
| เครื่องประดับ | 37500.00 |
| รองเท้า | 36000.00 |
| เสื้อผ้า | 46750.00 |
+---------------+-------------+
3 rows in set (0.00 sec)
จากตัวอย่าง เราได้ทำการจัดกลุ่มข้อมูลตามประเภทสินค้า (category) แล้วใช้ฟังก์ชัน SUM() เพื่อหาราคาสินค้าทั้งหมดของแต่ละประเภท
กรณีใช้งานจริง
สถานการณ์: บริษัทแห่งหนึ่งต้องการทราบยอดขายรวมของสินค้าแต่ละประเภทในแต่ละเดือน เพื่อนำข้อมูลไปวิเคราะห์และวางแผนการตลาด
วิธีแก้ปัญหา: สมมติว่าเรามีตาราง sales ที่เก็บข้อมูลการขาย โดยมีคอลัมน์ product_id, sale_date, quantity, และ price
SELECT
DATE_FORMAT(sale_date, '%Y-%m') AS sale_month,
p.category,
SUM(s.quantity * s.price) AS total_sales
FROM sales s
JOIN products p ON s.product_id = p.id
GROUP BY sale_month, p.category
ORDER BY sale_month, p.category;
จากตัวอย่าง เราได้ทำการรวมตาราง sales และ products โดยใช้ product_id เป็นคีย์ จากนั้นเราได้จัดกลุ่มข้อมูลตามเดือน (sale_month) และประเภทสินค้า (category) แล้วใช้ฟังก์ชัน SUM() เพื่อหายอดขายรวมของแต่ละประเภทในแต่ละเดือน สุดท้ายเราเรียงลำดับข้อมูลตามเดือนและประเภทสินค้า
ข้อผิดพลาดที่พบบ่อย
- การใช้ SUM() กับคอลัมน์ที่ไม่ใช่ตัวเลข: อย่างที่กล่าวไปข้างต้น คอลัมน์ที่ใช้กับฟังก์ชัน
SUM()จะต้องเป็นชนิดข้อมูลตัวเลขเท่านั้น หากเป็นชนิดข้อมูลอื่น จะทำให้เกิดข้อผิดพลาด - การลืม WHERE clause: หากต้องการหาผลรวมของข้อมูลที่ตรงตามเงื่อนไขบางอย่าง อย่าลืมใช้
WHEREclause เพื่อกรองข้อมูลก่อนที่จะใช้ฟังก์ชันSUM() - การใช้งาน GROUP BY ไม่ถูกต้อง: หากใช้
GROUP BYร่วมกับSUM()อย่าลืมระบุคอลัมน์ที่ไม่ได้อยู่ในฟังก์ชันSUM()ในGROUP BYclause ด้วย
สรุป
ฟังก์ชัน SUM() เป็นเครื่องมือที่มีประโยชน์อย่างมากในการหาผลรวมของข้อมูลในฐานข้อมูล MySQL การใช้งานร่วมกับ GROUP BY ช่วยให้เราสามารถวิเคราะห์ข้อมูลได้อย่างละเอียดและมีประสิทธิภาพมากยิ่งขึ้น
ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน AVG() ซึ่งเป็นฟังก์ชันที่ใช้ในการหาค่าเฉลี่ยของค่าในคอลัมน์