We have a user table : CREATE TABLE `User` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(60) NOT NULL, `created_At` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `status` tinyint(4) NOT NULL DEFAULT '0', ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci I need to run a group by query where I need a count of users with different status values (0, 1, 2, 3) I tried following query : select status, count(*) from User where status in (0, 1, 2, 3) group by status this gives output for the status values present in the table e.g. | status | count(*) | | 0 | 10 | | 1 | 11 | but if the database does not contain let's say users with status values = 2 or 3 these records don't appear with a count 0. How do I go about this one ?