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

Đếm số lần xuất hiện của từng giá trị (Frequency) trong MySQL

Để đế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.