Bạn cần cắt ngắn trong GROUP BY
nữa:
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;
Phiên bản của bạn được tổng hợp theo từng giá trị ngày / giờ nhưng chỉ hiển thị thành phần ngày.
Ngoài ra, tôi khuyên bạn nên sử dụng current_date
thay vì now()
để ngày đầu tiên không bị cắt ngắn.