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

Thực hiện nhiều COUNT() trong một truy vấn MySQL

Dùng CASE bên trong COUNT() để đếm điều kiện khác nhau trên cùng một cột trong một lần quét bảng.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable (LastName VARCHAR(100));

Chèn dữ liệu:

mysql> INSERT INTO DemoTable VALUES('Smith'), ('Brown'), ('Brown'), ('Smith'), ('Taylor'), ('Taylor'), ('Miller'), ('Miller'), ('Miller');

Xem dữ liệu:

mysql> SELECT * FROM DemoTable;

Kết quả

+----------+
| LastName |
+----------+
| Smith    |
| Brown    |
| Brown    |
| Smith    |
| Taylor   |
| Taylor   |
| Miller   |
| Miller   |
| Miller   |
+----------+

Đếm tần suất 4 họ cùng lúc:

mysql> SELECT
    -> COUNT(CASE WHEN LastName='Smith' THEN 1 END) AS Smith_Count,
    -> COUNT(CASE WHEN LastName='Brown' THEN 1 END) AS Brown_Count,
    -> COUNT(CASE WHEN LastName='Taylor' THEN 1 END) AS Taylor_Count,
    -> COUNT(CASE WHEN LastName='Miller' THEN 1 END) AS Miller_Count
    -> FROM DemoTable;

Kết quả

+-------------+-------------+--------------+--------------+
| Smith_Count | Brown_Count | Taylor_Count | Miller_Count |
+-------------+-------------+--------------+--------------+
| 2           | 2           | 2            | 3            |
+-------------+-------------+--------------+--------------+

Giải thích: CASE WHEN ... THEN 1 END trả về 1 khi đúng, NULL khi sai. COUNT chỉ đếm giá trị không NULL. Cách này hiệu quả hơn nhiều câu SELECT COUNT(*) ... WHERE riêng biệt.