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

วิธีจัดเรียงอักษรและนับซ้ำด้วย GROUP BY และ ORDER BY ใน MySQL

รวม GROUP BY (นับ) และ ORDER BY (จัดเรียง) ในคำสั่งเดียว

ใช้ GROUP BY จัดกลุ่มค่าที่ซ้ำกัน แล้ว COUNT() นับจำนวน แล้ว ORDER BY เรียงผลลัพธ์ตามค่าที่จัดกลุ่ม (Alphabetical)

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

CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentGrade CHAR(1)
);

INSERT INTO DemoTable (StudentGrade) VALUES
('A'), ('F'), ('C'), ('A'), ('F'), ('F'), ('B'), ('C');

ข้อมูลในตาราง

+-----------+--------------+
| StudentId | StudentGrade |
+-----------+--------------+
| 1         | A            |
| 2         | F            |
| 3         | C            |
| 4         | A            |
| 5         | F            |
| 6         | F            |
| 7         | B            |
| 8         | C            |
+-----------+--------------+

คำสั่งจัดกลุ่ม นับ และเรียง A-Z

SELECT StudentGrade, COUNT(StudentId) AS Frequency
FROM DemoTable
GROUP BY StudentGrade
ORDER BY StudentGrade;

ผลลัพธ์

+--------------+-----------+
| StudentGrade | Frequency |
+--------------+-----------+
| A            | 2         |
| B            | 1         |
| C            | 2         |
| F            | 3         |
+--------------+-----------+

คำอธิบาย:

  • GROUP BY StudentGrade จัดกลุ่มเกรดที่ซ้ำกัน
  • COUNT(StudentId) นับจำนวนแถวในแต่ละกลุ่ม (StudentId เป็น PK ไม่มี NULL)
  • ORDER BY StudentGrade เรียงผลลัพธ์ตามเกรด A-Z (Default ASC)

การเรียงแบบอื่น:

  • ORDER BY Frequency DESC เรียงตามจำนวนมากไปน้อย
  • ORDER BY Frequency DESC, StudentGrade ASC เรียงจำนวนมากก่อน แล้วค่อยเรียงอักษร

⚐ หมายเหตุ: MySQL อนุญาตให้ ORDER BY คอลัมน์ที่ไม่ได้อยู่ใน GROUP BY (Non-standard) แต่ควรระบุครบถ้วนเพื่อความเข้ากันได้กับ SQL Mode ONLY_FULL_GROUP_BY