下面的查询返回给定月份和品牌的不同的“成员”计数(见下图)。
select to_char(transaction_date, 'YYYY-MM') as month, brand,
count(distinct UNIQUE_MEM_ID) as distinct_count
from source.table
group by to_char(transaction_date, 'YYYY-MM'), brand;数据在这个月结束后有15天的延迟收集(这意味着2016年9月的月度数据要到10月15日才能达到100% )。我只关心每月的数据。
我想提出的问题是:直到本月15日(10月),上个月的数据(9月)应该反映8月份的数据。当前的部分月份(10月)应该默认为前一个月,因此也是上述逻辑的默认值。
在本月15日之后,上个月的数据(9月)现在是100%,因此9月应该反映9月(10月将反映9月至11月15日,等等)。
当前的部分月份总是=前一个月。查询的复杂性在于如何计算前一个月。
此查询将在滚动的基础上运行,因此需要是动态的。
为了明确起见,我正在尝试构建一个查询,在这个查询中,前一个月(到本月底+ 15天)的distinct_count应该反映(当前月份-2个月)的值(针对每个品牌)。当月结束后15天后,前一个月=(当前月份- 1)。
部分当月默认为前一个月的数据。15天的数值应该是可变的/可修改的。

发布于 2016-10-31 18:03:55
下面是一些sudo代码,用于获取间隔的开始日期和结束日期。
开始日期:
date DATE_TRUNC('month', CURRENT_DATE - integer 15) - interval '1 month'
这将返回当前一个月后,只有在第15天,从那里你可以减去一个完整的月,以得到你的起点。
结束日期:要计算此值,请获取开始日期,加上一个月,减去一天。
https://stackoverflow.com/questions/40347191
复制相似问题