ใช้ COUNT() กับ GROUP BY แล้ว ORDER BY COUNT(*) DESC
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> EmployeeName VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง (มีชื่อซ้ำ)
mysql> INSERT INTO DemoTable VALUES('Sam'), ('David'), ('David'), ('Chris'), ('Robert'), ('Chris'), ('Sam'), ('Sam'), ('David'), ('Robert'), ('David'), ('Chris');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์ (12 แถว):
+--------------+ | EmployeeName | +--------------+ | Sam | | David | | David | | Chris | | Robert | | Chris | | Sam | | Sam | | David | | Robert | | David | | Chris | +--------------+
คำสั่งนับและเรียงจากมากไปน้อย
mysql> SELECT EmployeeName, COUNT(EmployeeName) AS Total
-> FROM DemoTable
-> GROUP BY EmployeeName
-> ORDER BY Total DESC;
ผลลัพธ์:
+--------------+-------+ | EmployeeName | Total | +--------------+-------+ | David | 4 | | Chris | 3 | | Sam | 3 | | Robert | 2 | +--------------+-------+
คำอธิบาย: GROUP BY จัดกลุ่มชื่อเหมือนกัน | COUNT() นับในแต่ละกลุ่ม | ORDER BY Total DESC เรียงจากมากไปน้อย