ใน SQL ฟังก์ชัน SUM() เป็นฟังก์ชันที่ใช้ในการรวมผลรวมของค่าตัวเลขจากคอลัมน์ที่เลือก ซึ่งสามารถใช้ได้ในหลายสถานการณ์ เช่น การหายอดรวมทั้งหมด การรวมเฉพาะกลุ่มของข้อมูล และอื่นๆ
รูปแบบพื้นฐานของการใช้ฟังก์ชัน SUM()
SELECT SUM(column_name)
FROM table_name;
สร้างตารางตัวอย่าง
เพื่อให้เห็นภาพ เราจะสร้างตารางตัวอย่างชื่อ Sales ซึ่งบันทึกข้อมูลการขายสินค้าแต่ละรายการ ดังนี้
CREATE TABLE Sales (
sale_id INT,
product_name VARCHAR(50),
quantity INT,
price_per_unit DECIMAL(10, 2),
sale_date DATE
);
INSERT INTO Sales (sale_id, product_name, quantity, price_per_unit, sale_date)
VALUES
(1, 'Product A', 10, 100.00, '2024-10-01'),
(2, 'Product B', 5, 200.00, '2024-10-02'),
(3, 'Product A', 8, 100.00, '2024-10-03'),
(4, 'Product C', 12, 150.00, '2024-10-01'),
(5, 'Product B', 7, 200.00, '2024-10-02');ข้อมูลในตาราง Sales

ตัวอย่างการใช้งาน SUM()
การหาผลรวมทั้งหมด
ใช้ SUM() เพื่อหายอดขายรวมของสินค้าทุกชิ้นที่มีในตาราง โดยการคูณจำนวน (quantity) กับราคาต่อหน่วย (price_per_unit) ก่อน
SELECT SUM(quantity * price_per_unit) AS total_sales
FROM Sales;ผลลัพธ์

การหาผลรวมแยกตามกลุ่มสินค้า (GROUP BY)
สามารถใช้ SUM() ร่วมกับ GROUP BY เพื่อหายอดขายรวมแยกตามชื่อสินค้า ดังนี้
SELECT product_name, SUM(quantity * price_per_unit) AS total_sales_per_product
FROM Sales
GROUP BY product_name;ผลลัพธ์

การหาผลรวมตามเงื่อนไข (WHERE)
สามารถใช้ SUM() ร่วมกับ WHERE เพื่อหาผลรวมที่ต้องการเฉพาะตามเงื่อนไขที่กำหนด เช่นหายอดขายสินค้าที่ขายในวันที่ 2024-10-02
SELECT SUM(quantity * price_per_unit) AS total_sales_on_date
FROM Sales
WHERE sale_date = '2024-10-02';ผลลัพธ์

การหาผลรวมจากหลายตาราง (JOIN)
หากมีหลายตารางที่ต้องการรวมผลรวม สามารถใช้ JOIN ร่วมกับ SUM() เช่น ในกรณีที่มีตาราง Customers ที่มีข้อมูลลูกค้าที่ซื้อสินค้า สามารถรวมยอดขายจากลูกค้าแต่ละคนได้
เราจะสร้างตาราง Customers ขึ้นมาเพื่อเก็บข้อมูลลูกค้า ดังนี้
CREATE TABLE Customers (
customer_id INT,
sale_id INT,
customer_name VARCHAR(50)
);
INSERT INTO Customers (customer_id, sale_id, customer_name)
VALUES
(1, 1, 'Customer 1'),
(2, 2, 'Customer 2'),
(3, 3, 'Customer 1'),
(4, 4, 'Customer 3'),
(5, 5, 'Customer 2');
ดึงข้อมูลจากตาราง Sales โดยมีการจอยกับตาราง Customers ด้วยคำสั่งดังนี้
SELECT customer_name, SUM(quantity * price_per_unit) AS total_sales_per_customer
FROM Sales
JOIN Customers ON Sales.sale_id = Customers.sale_id
GROUP BY customer_name;ผลลัพธ์

