Een GROUP BY heeft rijen nodig om mee te werken, dus als je geen rijen hebt voor een bepaalde categorie, krijg je de telling niet. Beschouw de where-clausule als een beperking van de bronrijen voordat ze worden gegroepeerd. De waar-clausule biedt geen lijst met categorieën om op te groeperen.
Wat u zou kunnen doen, is een query schrijven om de categorieën (voorsteden) te selecteren en vervolgens de telling in een subquery doen. (Ik weet niet zeker hoe de ondersteuning van MySQL hiervoor is)
Iets als:
SELECT
s.suburb_id,
(select count(*) from suburb_data d where d.suburb_id = s.suburb_id) as total
FROM
suburb_table s
WHERE
s.suburb_id in (1,2,3,4)
(MSSQL, excuses)