Hàm tổng hợp COUNT() kết hợp GROUP BY để đếm tần suất
Đếm số lần mỗi giá trị xuất hiện trong một cột.
Cú pháp
SELECT cot, COUNT(*) AS soLanXuatHien
FROM tenBang
GROUP BY cot;
Ví dụ: Đếm hãng xe
Bảng CountOccurrences:
CREATE TABLE CountOccurrences (
CarId INT NOT NULL AUTO_INCREMENT,
CarName VARCHAR(30),
PRIMARY KEY (CarId)
);
INSERT INTO CountOccurrences (CarName) VALUES
('Aston Martin'), ('BMW'), ('Aston Martin'), ('Honda'),
('BMW'), ('Audi'), ('Aston Martin'), ('Bugatti'),
('BMW'), ('Honda'), ('Audi'), ('BMW');
Truy vấn đếm:
SELECT CarName, COUNT(*) AS TotalCount
FROM CountOccurrences
GROUP BY CarName;
Kết quả
+--------------+------------+
| CarName | TotalCount |
+--------------+------------+
| Aston Martin | 3 |
| BMW | 4 |
| Honda | 2 |
| Audi | 2 |
| Bugatti | 1 |
+--------------+------------+
Mở rộng
- Sắp xếp theo tần suất:
ORDER BY TotalCount DESC. - Lọc tần suất:
HAVING COUNT(*) > 1(chỉ giá trị trùng lặp). - Đếm distinct:
COUNT(DISTINCT cot)đếm số giá trị duy nhất. - Đếm nhiều cột:
GROUP BY cot1, cot2đếm tổ hợp.
Hiệu năng
- Index trên cột GROUP BY tăng tốc đáng kể.
- Với bảng lớn, cân nhắc summary table / materialized view cập nhật định kỳ.