การคำนวณค่าเฉลี่ยและปัดเศษทศนิยมด้วย ROUND() และ AVG()
ใช้ฟังก์ชัน AVG() คำนวณค่าเฉลี่ย แล้วใช้ ROUND() ปัดเศษให้เป็นจำนวนเต็ม (0 ตำแหน่งทศนิยม)
รูปแบบคำสั่ง
SELECT ROUND(AVG(column_name), 0) AS average_value FROM table_name;
ตัวอย่าง: ค่าเฉลี่ยคะแนน ปัดเป็นจำนวนเต็ม
1. สร้างตารางและเพิ่มข้อมูล
CREATE TABLE DemoTable (
Score INT
);
INSERT INTO DemoTable VALUES (98), (97), (91), (86), (45);
2. ดูข้อมูลทั้งหมด
SELECT * FROM DemoTable;
ผลลัพธ์:
+-------+
| Score |
+-------+
| 98 |
| 97 |
| 91 |
| 86 |
| 45 |
+-------+
3. คำนวณค่าเฉลี่ย ปัด 0 ตำแหน่งทศนิยม
SELECT ROUND(AVG(Score), 0) AS Average FROM DemoTable;
ผลลัพธ์:
+---------+
| Average |
+---------+
| 83 |
+---------+
การคำนวณ: (98+97+91+86+45) / 5 = 417 / 5 = 83.4 → ปัดเป็น 83
ฟังก์ชันปัดเศษที่เกี่ยวข้อง
| ฟังก์ชัน | คำอธิบาย | ตัวอย่าง |
|---|---|---|
ROUND(x, d) | ปัดเศษตามหลักมากที่สุด (0.5 ขึ้นไปปัดขึ้น) | ROUND(83.4, 0) = 83 |
CEIL(x) / CEILING(x) | ปัดขึ้นเสมอ | CEIL(83.1) = 84 |
FLOOR(x) | ปัดลงเสมอ | FLOOR(83.9) = 83 |
TRUNCATE(x, d) | ตัดทิ้งทศนิยม (ไม่ปัด) | TRUNCATE(83.9, 0) = 83 |
การใช้งานขั้นสูง
ปัดเศษตามหลักต่างๆ
SELECT
AVG(Score) AS Exact_Average,
ROUND(AVG(Score), 0) AS Round_0,
ROUND(AVG(Score), 1) AS Round_1,
ROUND(AVG(Score), 2) AS Round_2
FROM DemoTable;
ค่าเฉลี่ยต่อกลุ่ม (GROUP BY)
SELECT Department, ROUND(AVG(Salary), 0) AS AvgSalary
FROM Employees
GROUP BY Department;
จัดการ NULL
AVG()ข้ามค่า NULL อัตโนมัติ- หากทุกค่าเป็น NULL → คืนค่า NULL
- ใช้
COALESCE(AVG(Score), 0)หากต้องการค่า 0 แทน NULL
ประเภทข้อมูลของผลลัพธ์
AVG()คืนค่าDECIMALหรือDOUBLEROUND()คืนค่าเดียวกับอินพุต (ถ้าใส่ DECIMAL ได้ DECIMAL)- ใช้
CAST(ROUND(AVG(Score), 0) AS UNSIGNED)หากต้องการ Integer ชัดเจน