我有一个表格,其创建日期名为long
,每个记录都有一个名为created_at
的删除日期。如果删除了记录,则该字段保存该日期;这是一个逻辑删除。
我需要计算特定月份的delete_at
。要了解active records
对我来说是什么,让我们看一个例子:
对于这个例子,我们将使用这个假设记录:
active record
此记录在创建日期和删除日期之间的每一天都有效。包括最后一个。因此,如果我需要计算3月的活动记录,在这种情况下,必须在该月的每一天计算此记录。
我有一个查询(真的很容易)显示特定月份的活动记录,但我的主要问题是如何计算该月每天的活动数。
id | created_at | deleted_at
1 | 23-01-2014 | 05-06-2014
答案 0 :(得分:1)
你在这里:
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;
您可以添加更多特定条件,仅加入来自myTable
的相关记录,但即使没有它,您也可以了解如何根据需要实现计数。