【发布时间】:2011-10-14 17:17:12
【问题描述】:
以下代码生成日期并按天计算记录。
SELECT ts, COUNT(DISTINCT(user_id)) FROM
( SELECT current_date + s.ts FROM generate_series(-20,0,1) AS s(ts) )
AS series(ts)
LEFT JOIN messages
ON messages.created_at::date = ts
GROUP BY ts
ORDER BY ts
输出如下:
2011-07-07 0
2011-07-08 0
2011-07-09 0
2011-07-10 0
2011-07-11 0
2011-07-12 94
2011-07-13 56
2011-07-14 35
2011-07-15 56
2011-07-16 0
2011-07-17 13
您将如何将其修改为按 2 天分组,以便结果重叠?它不是每天计算不同的 user_id,而是每 2 天计算不同的 user_id。
这与将 2 天的计数相加不同,因为 user_id 每 2 天应该只计算一次。
在 PostgreSQL 8.3 中工作。
谢谢。
【问题讨论】:
标签: ruby-on-rails-3 postgresql select count group-by