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

MySQL: คำนวณเปอร์เซ็นต์คะแนนนักเรียน และเติมเครื่องหมาย %


คำอธิบาย

คำนวณเปอร์เซ็นต์จากผลรวมคะแนน 5 วิชา (เต็ม 500 คะแนน) ใช้ SUM(), ROUND(), CONCAT() ต่อเครื่องหมาย %

ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable ( 
    Marks int ); 
Query OK, 0 rows affected (0.62 sec)

การเพิ่มข้อมูล (คะแนน 5 วิชา)

mysql> insert into DemoTable values(88); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(65); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(98); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(45); 
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(67); 
Query OK, 1 row affected (0.33 sec)

แสดงข้อมูลทั้งหมด

mysql> select * from DemoTable;

ผลลัพธ์:

+-------+
| Marks |
+-------+
| 88    |
| 65    |
| 98    |
| 45    |
| 67    |
+-------+
5 rows in set (0.00 sec)

คิวรี่คำนวณเปอร์เซ็นต์และเติม %

mysql> select concat(round(SUM(Marks)*100/500), '%') from DemoTable;

ผลลัพธ์

+---------------------------------------+
| concat(round(SUM(Marks)*100/500), '%') |
+---------------------------------------+
| 73%                                   |
+---------------------------------------+
1 row in set (0.00 sec)

คำอธิบายการคำนวณ

  1. SUM(Marks) = 88+65+98+45+67 = 363
  2. 363 * 100 / 500 = 72.6
  3. ROUND(72.6) = 73
  4. CONCAT(73, '%') = '73%'
  5. ปรับปรุง: ใช้ FORMAT() แทน ROUND+CONCAT

    SELECT CONCAT(FORMAT(SUM(Marks)*100/500, 0), '%') FROM DemoTable;

    FORMAT(72.6, 0) = '73' (มี Comma Separator สำหรับตัวเลขใหญ่)

    กรณีมีหลายคน (Group By)

    SELECT StudentName, CONCAT(ROUND(AVG(Marks)*100/100), '%') as Percentage
    FROM StudentMarks
    GROUP BY StudentName;