我有一个非常简单的查询要做-一个表有一个日期字段,我需要选择所有行的计数,按月份分组,包括间隙。
我有下面的查询,工程天,但它不工作的月份
SELECT f.date::date as period, count(e.id) as count
FROM generate_series((now() - interval '1 year')::date, now()::date, '1 month'::interval) AS f(date)
LEFT JOIN my_table AS e ON e.created_at::date = f.date::date
GROUP BY f.date
ORDER BY f.date DESC;
由于某种原因,该查询对所有行返回零。
此查询可以工作,但不能填补空白
SELECT date_trunc('month', created_at) AS txn_month, count(*) as count
FROM my_table
GROUP BY txn_month
怎样做才是正确的呢?
1条答案
按热度按时间ubby3x7f1#
以下查询返回
my_table
中每个期间的行数,包括my_table
中没有相应数据的期间。该查询的结构是这样的,通过更改子查询
agg_periods
中的期间生成参数,可以适应不同的期间。因为created_at
在比较中没有使用类型转换,所以PostgreSQL不会被阻止在该列上使用索引。