PostgreSQL选择最近30天的结果

时间:2019-04-24 22:57:21

标签: postgresql select

我需要一份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 

1 个答案:

答案 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"