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.