รวม 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