Cú pháp chuẩn
SELECT cot, COUNT(*) AS dem
FROM bang
GROUP BY cot
ORDER BY dem DESC
LIMIT 10;
Ví dụ: 20 dòng dữ liệu, tìm top 10
Dữ liệu (có nhiều giá trị trùng)
+-------+
| Value |
+-------+
| 10 |
| 1100 |
| 200 |
| 2100 |
| 1100 |
| 450 |
| 600 |
| 2100 |
| 150 |
| 16454 |
| 450 |
| 2350 |
| 1780 |
| 1345 |
| 34 |
| 2100 |
| 19034 |
| 1844 |
| 34 |
| 16454 |
+-------+
Truy vấn
mysql> SELECT Value, COUNT(*)
-> FROM countTop10Demo
-> GROUP BY Value
-> ORDER BY COUNT(*) DESC
-> LIMIT 10;
Kết quả
+-------+----------+
| Value | count(*) |
+-------+----------+
| 2100 | 3 |
| 1100 | 2 |
| 34 | 2 |
| 450 | 2 |
| 16454 | 2 |
| 1780 | 1 |
| 200 | 1 |
| 1345 | 1 |
| 19034 | 1 |
| 600 | 1 |
+-------+----------+
Giải thích
GROUP BY Value: Gom nhóm các giá trị giống nhau
COUNT(*): Đếm số dòng mỗi nhóm
ORDER BY COUNT(*) DESC: Sắp xếp giảm dần theo tần suất
LIMIT 10: Lấy 10 hàng đầu
Mở rộng: Top N theo tỷ lệ %