SQL การใช้งานฟังก์ชัน SUM

ใน SQL ฟังก์ชัน SUM() เป็นฟังก์ชันที่ใช้ในการรวมผลรวมของค่าตัวเลขจากคอลัมน์ที่เลือก ซึ่งสามารถใช้ได้ในหลายสถานการณ์ เช่น การหายอดรวมทั้งหมด การรวมเฉพาะกลุ่มของข้อมูล และอื่นๆ

รูปแบบพื้นฐานของการใช้ฟังก์ชัน SUM()

SELECT SUM(column_name)
FROM table_name;

สร้างตารางตัวอย่าง

เพื่อให้เห็นภาพ เราจะสร้างตารางตัวอย่างชื่อ Sales ซึ่งบันทึกข้อมูลการขายสินค้าแต่ละรายการ ดังนี้

SQL
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) ก่อน

SQL
SELECT SUM(quantity * price_per_unit) AS total_sales
FROM Sales;

ผลลัพธ์

การหาผลรวมแยกตามกลุ่มสินค้า (GROUP BY)

สามารถใช้ SUM() ร่วมกับ GROUP BY เพื่อหายอดขายรวมแยกตามชื่อสินค้า ดังนี้

SQL
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

SQL
SELECT SUM(quantity * price_per_unit) AS total_sales_on_date
FROM Sales
WHERE sale_date = '2024-10-02';

ผลลัพธ์

การหาผลรวมจากหลายตาราง (JOIN)

หากมีหลายตารางที่ต้องการรวมผลรวม สามารถใช้ JOIN ร่วมกับ SUM() เช่น ในกรณีที่มีตาราง Customers ที่มีข้อมูลลูกค้าที่ซื้อสินค้า สามารถรวมยอดขายจากลูกค้าแต่ละคนได้

เราจะสร้างตาราง Customers ขึ้นมาเพื่อเก็บข้อมูลลูกค้า ดังนี้

SQL
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 ด้วยคำสั่งดังนี้

SQL
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;

ผลลัพธ์

แชร์เรื่องนี้