การคำนวณเปอร์เซ็นต์เฉลี่ยจากคอลัมน์ Marks ใน MySQL
ใช้ SUM() หาผลรวมคะแนน COUNT(*) นับจำนวนแถว แล้วหารกัน และต่อสตริง %'
สร้างตารางและข้อมูล
mysql> create table DemoTable1398 (
-> Marks int
-> );
Query OK, 0 rows affected (0.50 sec)
mysql> insert into DemoTable1398 values(78);
mysql> insert into DemoTable1398 values(82);
mysql> insert into DemoTable1398 values(90);
mysql> insert into DemoTable1398 values(98);
ข้อมูลทั้งหมด
+-------+ | Marks | +-------+ | 78 | | 82 | | 90 | | 98 | +-------+
คำสั่งคำนวณเปอร์เซ็นต์
mysql> select concat(sum(Marks)/count(*), '%') from DemoTable1398;
ผลลัพธ์
+---------------------------------+ | concat(sum(Marks)/count(*), '%') | +---------------------------------+ | 87.0000% | +---------------------------------+
การคำนวณ
- ผลรวม: 78 + 82 + 90 + 98 = 348
- จำนวน: 4
- ค่าเฉลี่ย: 348 / 4 = 87.0
- ต่อ %: "87.0000%"
ปรับปรุงรูปแบบผลลัพธ์
-- ปัดเศษ 2 ตำแหน่งทศนิยม SELECT CONCAT(ROUND(SUM(Marks)/COUNT(*), 2), '%') FROM DemoTable1398; -- ผล: 87.00% -- ใช้ FORMAT (มีคอมม่า thousand separator) SELECT CONCAT(FORMAT(SUM(Marks)/COUNT(*), 2), '%') FROM DemoTable1398; -- คำนวณเปอร์เซ็นต์ต่อแถว (แต่ละคะแนน / คะแนนเต็ม * 100) SELECT Marks, CONCAT(ROUND(Marks/100*100, 2), '%') AS Percentage FROM DemoTable1398;
กรณีคะแนนเต็มไม่ใช่ 100
SELECT CONCAT(ROUND(SUM(Marks) / (COUNT(*) * 150) * 100, 2), '%')
FROM DemoTable1398;
สมมติคะแนนเต็ม 150 ต่อวิชา
หมายเหตุ: CONCAT คืนค่า string หากต้องการคำนวณต่อ ให้คำนวณตัวเลขก่อน แปลง string ทีหลัง