การคำนวณยอดรวม (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;