我需要一份PostgreSQL
最近30天的报告,其中有些日子可能没有条目。因此,上周二migth没有任何记录。星期三可能有8条记录。
这将成为条形图,因此需要最近30天的每一天。仅依靠数据库,是否可以强制最近30天的结果以及相应的结果值(即使为nil)?我必须将最后一个设置为0。现在我只显示16天。
我认为我必须对Ruby
中的结果进行迭代才能获得我要寻找的数据集。我试图依靠数据库而不是在外面运行以进行进一步处理。
SELECT DISTINCT creation_date::date as myday, count(id)
FROM queries
GROUP BY myday
ORDER BY myday DESC
LIMIT 30
答案 0 :(得分:2)
您可能想尝试使用generate_series首先获得0到29之间的计数器,然后使用左外部联接,尝试以下操作(注意,了解所使用的表将很有帮助):
SELECT a."TheDate", COALESCE(b."recs", 0)
FROM
(
SELECT CURRENT_DATE - i "TheDate"
FROM generate_series(0, 29) i
) a
LEFT OUTER JOIN (
SELECT "TheDate", COUNT(*) "recs"
FROM "Records"
WHERE "TheDate" > (CURRENT_DATE - INTERVAL '30 DAY')::DATE
GROUP BY "TheDate"
)b ON a."TheDate"=b."TheDate"