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

จะรวมคะแนนของนักเรียนที่มีชื่อเดียวกันใน MySQL ด้วย ORDER BY ได้อย่างไร


สำหรับสิ่งนี้ ให้ใช้ ORDER BY ร่วมกับส่วนคำสั่ง GROUP BY ให้เราสร้างตารางที่มีชื่อนักเรียนและคะแนนก่อน -

mysql> สร้างตาราง countRowValueDemo -> ( -> StudentId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> StudentMathScore int -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.71 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแทรกระเบียนในตารางโดยใช้คำสั่งแทรก -

mysql> แทรกลงใน countRowValueDemo(StudentName,StudentMathScore) values('Larry',45);Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกเข้าไปใน countRowValueDemo(StudentName,StudentMathScore) ค่า ('Mike',56);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงใน countRowValueDemo (StudentName,StudentMathScore) ค่า ('John',60); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน countRowValueDemo (StudentName,StudentMathScore) ค่า ('David',40); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงใน countRowValueDemo (StudentName, StudentMathScore) ค่า ('David', 70); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกในค่า countRowValueDemo (StudentName,StudentMathScore) ('John',80); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า countRowValueDemo (StudentName,StudentMathScore) ('David',88); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก * จาก countRowValueDemo;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-----------+-------------+-----------------+| รหัสนักศึกษา | ชื่อนักเรียน | StudentMathScore |+-----------+-------------+-----------------+| 1 | แลร์รี่ | 45 || 2 | ไมค์ | 56 || 3 | จอห์น | 60 || 4 | เดวิด | 40 || 5 | เดวิด | 70 || 6 | จอห์น | 80 || 7 | เดวิด | 88 |+-----------+--------------------------+-----------+7 แถว ในชุด (0.00 วินาที)

กรณีที่ 1: ลำดับจากมากไปน้อย (Sum)

ต่อไปนี้เป็นแบบสอบถามเพื่อรวมคะแนนของนักเรียนที่มีชื่อคล้ายกัน ผลลัพธ์จะแสดงในลำดับจากมากไปน้อย -

mysql> เลือก StudentName -> sum(StudentMathScore) AS TOTAL_SCORE -> from countRowValueDemo -> group by StudentName -> order by sum(StudentMathScore) desc;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-------------+-------------+| ชื่อนักเรียน | TOTAL_SCORE |+-------------+-------------+| เดวิด | 198 || จอห์น | 140 || ไมค์ | 56 || แลร์รี่ | 45 |+-------------+-------------+4 แถวในชุด (0.00 วินาที)

กรณีที่ 2: ลำดับจากน้อยไปมาก (Sum)

ต่อไปนี้เป็นแบบสอบถามเพื่อรวมคะแนนของนักเรียนที่มีชื่อคล้ายกัน ผลลัพธ์จะแสดงในลำดับจากมากไปน้อย -

mysql> เลือก StudentName, -> sum(StudentMathScore) AS TOTAL_SCORE -> จาก countRowValueDemo -> จัดกลุ่มตามชื่อนักเรียน -> เรียงลำดับตามผลรวม (StudentMathScore);

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-------------+-------------+| ชื่อนักเรียน | TOTAL_SCORE |+-------------+-------------+| แลร์รี่ | 45 || ไมค์ | 56 || จอห์น | 140 || เดวิด | 198 |+-------------+-------------+4 แถวในชุด (0.00 วินาที)