Giới thiệu
Sử dụng COUNT() kết hợp GROUP BY để thống kê tần suất xuất hiện của từng giá trị trong một cột. Bài viết demo đếm giá trị X, Y, Z.
Ví dụ thực hành
1. Tạo bảng DemoTable841
mysql> CREATE TABLE DemoTable841 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value VARCHAR(100)
);
2. Chèn dữ liệu
mysql> INSERT INTO DemoTable841(Value) VALUES('X'),('Y'),('Y'),('Z'),('X'),('Z');
3. Truy vấn đếm và gán nhãn 'Times'
mysql> SELECT Value, CONCAT(COUNT(Value), ' Times') FROM DemoTable841 GROUP BY Value;
4. Kết quả
+-------+-------------------------------+
| Value | CONCAT(COUNT(Value),' Times') |
+-------+-------------------------------+
| X | 2 Times |
| Y | 2 Times |
| Z | 2 Times |
+-------+-------------------------------+
Các biến thể hữu ích
-- Chỉ đếm, không gán nhãn
SELECT Value, COUNT(*) AS cnt FROM DemoTable841 GROUP BY Value;
-- Sắp xếp theo số lượng giảm dần
SELECT Value, COUNT(*) AS cnt FROM DemoTable841 GROUP BY Value ORDER BY cnt DESC;
-- Lọc chỉ các giá trị xuất hiện > 1 lần (HAVING)
SELECT Value, COUNT(*) AS cnt FROM DemoTable841 GROUP BY Value HAVING cnt > 1;
-- Đếm riêng NULL (COUNT(*) đếm tất cả hàng, COUNT(cot) bỏ qua NULL)
SELECT COUNT(*) AS total_rows, COUNT(Value) AS non_null_rows FROM DemoTable841;
Lưu ý
COUNT(*)đếm số hàng.COUNT(cot)đếm số giá trị không NULL của cột.GROUP BYtự động sắp xếp kết quả theo cột gom nhóm (MySQL < 5.7). Từ 5.7+ cầnORDER BYrõ ràng.- Có thể gom nhóm theo nhiều cột:
GROUP BY col1, col2.