Postgresql 对按时间间隔计数的按天分组的记录进行计数

Postgresql 对按时间间隔计数的按天分组的记录进行计数,postgresql,Postgresql,这是一个问题 WITH dates AS ( SELECT current_date - serie AS date FROM generate_series(0, 365, 1) AS serie ), items AS ( SELECT * FROM items WHERE created_at BETWEEN now() - interval '6 months' AND now() ) SELECT dates.date, count(items

这是一个问题

WITH dates AS (
    SELECT current_date - serie AS date
    FROM generate_series(0, 365, 1) AS serie
), items AS (
    SELECT *
    FROM items
    WHERE created_at BETWEEN now() - interval '6 months' AND now()
)

SELECT dates.date, count(items)
FROM dates
LEFT OUTER JOIN items ON items.created_at::date = dates.date
GROUP BY dates.date
除了一件事之外,一切都很好——我需要以某种方式将
now()
替换为连续的一天。 因此,根据当天的条件计算每天的物品数量。 只是无法引用它

有什么解决办法吗?

像这样的方法吗

WITH dates AS (
    SELECT current_date - serie AS date
    FROM generate_series(0, 365, 1) AS serie
)
SELECT dates.date, count(items)
FROM dates
LEFT OUTER JOIN items ON created_at BETWEEN dates.date- interval '6 months' AND dates.date
GROUP BY dates.date;

我得出了以下解决方案,其结果与Vao Tsun提出的相同:

WITH dates AS (
    SELECT current_date - serie AS date
    FROM generate_series(0, 365, 1) AS serie
), date_intervals AS (
    SELECT
      (dates.date - INTERVAL '6 months') AS start_date,
      dates.date                         AS end_date
    FROM dates
)

SELECT date_intervals.end_date, count(items)
FROM date_intervals
  LEFT OUTER JOIN items ON items.created_at BETWEEN date_intervals.start_date AND date_intervals.end_date
GROUP BY 1
ORDER BY 1

哪一天在哪一排?请使用cte别名和列names@VaoTsun很抱歉,
dates.date
如果您想引用项目cte中的dates.date-您必须加入它,我想这是一个相同的解决方案)请编辑回答:删除
项目。创建时间::date=dates.date和
此条件将不起作用。