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

วิธีคำนวณยอดรวมจากคอลัมน์ Cost และ Quantity ใน MySQL

การคำนวณยอดรวม (Total Amount) จากราคาและจำนวนใน MySQL

ใช้การคูณคอลัมน์ตรงในคำสั่ง SELECT: Cost * Quantity AS Total_Amount

รูปแบบคำสั่ง

SELECT Cost, Quantity, Cost * Quantity AS Total_Amount FROM table_name;

ตัวอย่าง: คำนวณยอดรวมสินค้า

1. สร้างตารางและเพิ่มข้อมูล

CREATE TABLE DemoTable (
    Cost INT,
    Quantity INT
);

INSERT INTO DemoTable VALUES (65, 2);
INSERT INTO DemoTable VALUES (290, 4);
INSERT INTO DemoTable VALUES (40, 3);

2. ดูข้อมูลทั้งหมด

SELECT * FROM DemoTable;

ผลลัพธ์:

+------+----------+
| Cost | Quantity |
+------+----------+
| 65   | 2        |
| 290  | 4        |
| 40   | 3        |
+------+----------+

3. คำนวณยอดรวมต่อแถว

SELECT Cost, Quantity, Cost * Quantity AS Total_Amount FROM DemoTable;

ผลลัพธ์:

+------+----------+--------------+
| Cost | Quantity | Total_Amount |
+------+----------+--------------+
| 65   | 2        | 130          |
| 290  | 4        | 1160         |
| 40   | 3        | 120          |
+------+----------+--------------+

การขยาย: คำนวณยอดรวมทั้งหมด (Grand Total)

SELECT 
    Cost, 
    Quantity, 
    Cost * Quantity AS Total_Amount,
    SUM(Cost * Quantity) OVER () AS Grand_Total
FROM DemoTable;

ต้องใช้ MySQL 8.0+ (Window Function)

หรือใช้ Subquery (รองรับทุกเวอร์ชัน)

SELECT 
    Cost, 
    Quantity, 
    Cost * Quantity AS Total_Amount,
    (SELECT SUM(Cost * Quantity) FROM DemoTable) AS Grand_Total
FROM DemoTable;

การใช้งานกับ DECIMAL (เงิน/สกุลเงิน)

CREATE TABLE OrderItems (
    Price DECIMAL(10, 2),
    Quantity INT
);

SELECT 
    Price, 
    Quantity, 
    Price * Quantity AS LineTotal,
    ROUND(Price * Quantity, 2) AS LineTotal_Rounded
FROM OrderItems;

ข้อควรระวัง

  • ชนิดข้อมูล INT คูณ INT อาจล้น (Overflow) หากค่ามาก → ใช้ BIGINT หรือ DECIMAL
  • การคำนวณเงิน ควรใช้ DECIMAL(precision, scale) ไม่ใช่ FLOAT/DOUBLE (ปัญหาความแม่นยำ)
  • NULL * ค่าใดๆ = NULL → ใช้ COALESCE(Cost, 0) * COALESCE(Quantity, 0) หากอาจมี NULL

การคำนวณภาษี/ส่วนลด

SELECT 
    Cost, 
    Quantity,
    Cost * Quantity AS SubTotal,
    ROUND(Cost * Quantity * 0.07, 2) AS VAT_7_Percent,
    ROUND(Cost * Quantity * 1.07, 2) AS Total_With_VAT
FROM DemoTable;