Để đếm tần suất (frequency) của từng giá trị riêng biệt trong một cột, dùng GROUP BY cột đó kết hợp hàm tổng hợp COUNT(*) (hoặc COUNT(1), COUNT(column)).
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Number INT
);
mysql> INSERT INTO DemoTable (Number) VALUES
(10), (20), (20), (30), (10), (10);
Dữ liệu
mysql> SELECT * FROM DemoTable;
+----+--------+
| Id | Number |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 3 | 20 |
| 4 | 30 |
| 5 | 10 |
| 6 | 10 |
+----+--------+
Truy vấn đếm tần suất
mysql> SELECT Number, COUNT(Number) AS CommonElement
FROM DemoTable
GROUP BY Number;
Kết quả
+--------+---------------+
| Number | CommonElement |
+--------+---------------+
| 10 | 3 |
| 20 | 2 |
| 30 | 1 |
+--------+---------------+
Giải thích
GROUP BY Number: Gom nhóm các hàng có cùng giá trịNumber.COUNT(Number): Đếm số hàng trong mỗi nhóm (bỏ qua NULL). Với khóa chính/not null,COUNT(*),COUNT(1),COUNT(Number)cho kết quả giống nhau.AS CommonElement: Đặt bí danh cho cột kết quả.
Sắp xếp kết quả (thường dùng)
SELECT Number, COUNT(*) AS freq
FROM DemoTable
GROUP BY Number
ORDER BY freq DESC, Number;
Sắp xếp tần suất giảm dần, giá trị tăng dần để ổn định.
Mở rộng: Tìm giá trị xuất hiện nhiều nhất (Mode)
SELECT Number FROM DemoTable
GROUP BY Number
ORDER BY COUNT(*) DESC
LIMIT 1;
Lưu ý: Với bảng lớn, đảm bảo có index trên cột GROUP BY để tăng tốc.