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

Đếm số lượng Yes/No theo nhóm ID trùng lặp trong MySQL

Khi một ID xuất hiện nhiều lần với các giá trị khác nhau (Yes/No) trên cột ENUM, ta có thể dùng SUM() kết hợp biểu thức logic để đếm số lần xuất hiện của từng giá trị cho mỗi ID.

Ví dụ minh họa

Tạo bảng (cột ENUM chỉ nhận 'YES' hoặc 'NO'):

mysql> CREATE TABLE DemoTable1430 (
    EmployeeId INT,
    isMarried ENUM('YES', 'NO')
);

Chèn dữ liệu (ID 1001 xuất hiện 4 lần):

mysql> INSERT INTO DemoTable1430 VALUES (1001, 'Yes');
mysql> INSERT INTO DemoTable1430 VALUES (1001, 'No');
mysql> INSERT INTO DemoTable1430 VALUES (1001, 'Yes');
mysql> INSERT INTO DemoTable1430 VALUES (1001, 'Yes');

Dữ liệu:

mysql> SELECT * FROM DemoTable1430;
+------------+-----------+
| EmployeeId | isMarried |
+------------+-----------+
|       1001 | YES       |
|       1001 | NO        |
|       1001 | YES       |
|       1001 | YES       |
+------------+-----------+

Đếm Yes/No theo nhóm EmployeeId

Sử dụng SUM() với biểu thức boolean (TRUE = 1, FALSE = 0):

mysql> SELECT EmployeeId,
    SUM(isMarried = 'Yes') AS NumberOfMarried,
    SUM(isMarried = 'No') AS NumberOfUnMarried
    FROM DemoTable1430
    GROUP BY EmployeeId;

Kết quả:

+------------+-----------------+-------------------+
| EmployeeId | NumberOfMarried | NumberOfUnMarried |
+------------+-----------------+-------------------+
|       1001 |               3 |                 1 |
+------------+-----------------+-------------------+

Giải thích kỹ thuật

  • Trong MySQL, biểu thức so sánh isMarried = 'Yes' trả về 1 (TRUE) hoặc 0 (FALSE).
  • SUM() cộng dồn các giá trị 1/0 này → hiệu quả là đếm số lần TRUE.
  • Cách này nhanh hơn và gọn hơn COUNT(CASE WHEN ... THEN 1 END).

Mở rộng: Đếm nhiều giá trị ENUM

SELECT 
    EmployeeId,
    SUM(status = 'Active') AS active_count,
    SUM(status = 'Inactive') AS inactive_count,
    SUM(status = 'Pending') AS pending_count
FROM users
GROUP BY EmployeeId;

Lưu ý: MySQL không phân biệt chữ hoa/thường cho ENUM khi so sánh, nhưng nên viết đúng chữ hoa/thường như định nghĩa để code rõ ràng.