Трябва да съкратите в GROUP BY
както и:
SELECT created_at::date, COUNT(*)
FROM table_name
WHERE product_uuid = '586d8e21b9529d14801b91bd' AND
created_at > now() - interval '30 days'
GROUP BY created_at::date
ORDER BY created_at::date ASC;
Вашата версия обобщава по всяка стойност за дата/час, но показва само компонента за дата.
Освен това бих ви препоръчал да използвате current_date
вместо now()
така че първата дата не се съкращава.