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

นับจำนวนค่าซ้ำและเรียงลำดับจากมากไปน้อยใน MySQL

ใช้ 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 เรียงจากมากไปน้อย