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

Đếm số lần xuất hiện giá trị trong MySQL (GROUP BY + COUNT)

Vấn đề: Thống kê tần suất từng giá trị trong cột

Cột Value có nhiều giá trị trùng lặp. Cần đếm số lần xuất hiện của mỗi giá trị.

Giải pháp: GROUP BY + COUNT(*)

Cú pháp chuẩn SQL: SELECT column, COUNT(*) FROM table GROUP BY column;

1. Tạo bảng và dữ liệu

CREATE TABLE DemoTable (Value INT);
INSERT INTO DemoTable VALUES (1), (2), (3), (2), (3), (3), (1);

2. Dữ liệu gốc

+-------+
| Value |
+-------+
|     1 |
|     2 |
|     3 |
|     2 |
|     3 |
|     3 |
|     1 |
+-------+

3. Truy vấn đếm

SELECT Value, COUNT(*) AS Frequency 
FROM DemoTable 
GROUP BY Value;

4. Kết quả

+-------+-----------+
| Value | Frequency |
+-------+-----------+
|     1 |         2 |
|     2 |         2 |
|     3 |         3 |
+-------+-----------+

Mở rộng: Sắp xếp theo tần suất giảm dần

SELECT Value, COUNT(*) AS Frequency 
FROM DemoTable 
GROUP BY Value 
ORDER BY Frequency DESC;

Lưu ý

  • COUNT(*) đếm số hàng trong nhóm (kể cả NULL nếu cột cho phép NULL).
  • COUNT(column) chỉ đếm hàng có column không NULL.
  • Có index trên cột Value sẽ tăng tốc GROUP BY đáng kể.
  • MySQL 8.0+ có thể dùng COUNT(*) OVER (PARTITION BY Value) để giữ nguyên chi tiết hàng và thêm cột tần suất.