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和
此条件将不起作用。