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

Nhóm theo tên và hiển thị số lượng trong cột mới với GROUP BY COUNT MySQL

Đếm số lần xuất hiện của mỗi tên với GROUP BY và COUNT()

Sử dụng GROUP BY Name chia dữ liệu thành các nhóm theo tên, sau đó COUNT(Name) hoặc COUNT(*) đếm số hàng trong mỗi nhóm.

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

mysql> CREATE TABLE DemoTable (Name VARCHAR(30));
mysql> INSERT INTO DemoTable VALUES
    ('Chris'), ('Robert'), ('Mike'), ('Robert'), ('Mike'), ('David');

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+--------+
| Name   |
+--------+
| Chris  |
| Robert |
| Mike   |
| Robert |
| Mike   |
| David  |
+--------+

3. Truy vấn: Nhóm theo Name, đếm số hàng

mysql> SELECT Name, COUNT(Name) AS NumberOfRowsPerName
    FROM DemoTable
    GROUP BY Name;

4. Kết quả

+--------+---------------------+
| Name   | NumberOfRowsPerName |
+--------+---------------------+
| Chris  | 1                   |
| Robert | 2                   |
| Mike   | 2                   |
| David  | 1                   |
+--------+---------------------+

Giải thích:

  • Chris: 1 hàng
  • Robert: 2 hàng
  • Mike: 2 hàng
  • David: 1 hàng

COUNT(Name) vs COUNT(*): Với cột NOT NULL thì giống nhau. Nếu cột có NULL: COUNT(Name) bỏ qua NULL, COUNT(*) đếm tất cả hàng. Khuyến nghị COUNT(*) cho rõ ràng.

Mở rộng - Sắp xếp theo số lượng giảm dần:

SELECT Name, COUNT(*) AS cnt
FROM DemoTable
GROUP BY Name
ORDER BY cnt DESC, Name;
+--------+-----+
| Name   | cnt |
+--------+-----+
| Mike   | 2   |
| Robert | 2   |
| Chris  | 1   |
| David  | 1   |
+--------+-----+

Ứng dụng: Thống kê tần suất, tìm duplicate, báo cáo top N, phân tích phân bố dữ liệu.