Musisz pogrupować według każdego elementu, który może być inny. Dodaj więc MONTH(Date)
a nawet YEAR(Date)
w zależności od zakresu zapytania.
select DAY(Date), count(*) from Posts WHERE shopID != '' group by shopID, YEAR(Date), MONTH(Date), DAY(Date)