Count data per day in a specific month in Postgresql
我有一个表格,其创建日期名为
我需要计算特定月份的
在这个例子中,我们将使用这个假设记录:
1 2 | id | created_at | deleted_at 1 | 23-01-2014 | 05-06-2014 |
此记录在其创建日期和删除日期之间的每一天都有效。 包括最后一个。 因此,如果我需要计算3月的活动记录,在这种情况下,必须在该月的每一天计算此记录。
我有一个查询(很容易做到)显示特定月份的活动记录,但我的主要问题是如何计算该月每天的活动数。
1 2 3 4 5 6 7 8 | SELECT date_trunc('day', created_at) AS dia_creacion, date_trunc('day', deleted_at) AS dia_eliminacion FROM myTable WHERE created_at < TO_DATE('01-04-2014', 'DD-MM-YYYY') AND (deleted_at IS NULL OR deleted_at >= TO_DATE('01-03-2014', 'DD-MM-YYYY')) |
这个给你:
1 2 3 4 5 6 7 8 9 10 | SELECT TO_DATE('01-03-2014', 'DD-MM-YYYY') + g.i, COUNT( CASE (TO_DATE('01-03-2014', 'DD-MM-YYYY') + g.i) BETWEEN created_at AND COALESCE(deleted_at, TO_DATE('01-03-2014', 'DD-MM-YYYY') + g.i) WHEN TRUE THEN 1 ELSE NULL END) FROM generate_series(0, TO_DATE('01-04-2014', 'DD-MM-YYYY') - TO_DATE('01-03-2014', 'DD-MM-YYYY')) AS g(i) LEFT JOIN myTable ON TRUE GROUP BY 1 ORDER BY 1; |
您可以添加更多特定条件以仅加入来自