Sử dụng COUNT(DISTINCT column) bên trong GROUP BY để đếm số giá trị duy nhất của một cột cho mỗi nhóm của cột khác.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (
-> Name VARCHAR(100),
-> Code VARCHAR(100)
-> );
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable VALUES('Chris', '0001'), ('Robert', '0002'), ('Robert', '0003'), ('Chris', '0001');
Query OK, 4 rows affected (0.17 sec)
Truy vấn COUNT DISTINCT theo nhóm
mysql> SELECT Name, COUNT(DISTINCT Code) FROM DemoTable GROUP BY Name;
Kết quả:
+--------+----------------------+ | Name | COUNT(DISTINCT Code) | +--------+----------------------+ | Chris | 1 | | Robert | 2 | +--------+----------------------+ 2 rows in set (0.06 sec)
Giải thích:
- Chris: Code chỉ có '0001' → 1 giá trị distinct
- Robert: Code có '0002' và '0003' → 2 giá trị distinct