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

MySQL: คำนวณเปอร์เซ็นต์จากคะแนนสอบ

การคำนวณเปอร์เซ็นต์เฉลี่ยจากคอลัมน์ 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 ทีหลัง