我需要PostgreSQL 过去 30 天的报告,其中某些日子可能没有条目。所以上周二可能没有任何记录。星期三可能有 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
Run Code Online (Sandbox Code Playgroud)
您可能想尝试使用 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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3062 次 |
| 最近记录: |