Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Đếm số lần xuất hiện của mỗi giá trị trong cột MySQL

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 BY tự động sắp xếp kết quả theo cột gom nhóm (MySQL < 5.7). Từ 5.7+ cần ORDER BY rõ ràng.
  • Có thể gom nhóm theo nhiều cột: GROUP BY col1, col2.