Je moet groeperen op elk stuk dat mogelijk anders is. Dus voeg MONTH(Date) . toe en zelfs YEAR(Date) afhankelijk van het bereik van uw zoekopdracht.
select DAY(Date), count(*) from Posts WHERE shopID != '' group by shopID, YEAR(Date), MONTH(Date), DAY(Date)