select * from xundabasedb.syncepidemicmonthdata
where DataTime >(SELECT DATE_ADD(now(),INTERVAL -1 MONTH))
order by DataTime
第一个表.DETE列 >= TRUNC( TO_DATE( 外部传入的开始时间, '-MM-DD' ), 'MM')
是大于等于 开始时间的那个月的第一天。
第二个
表.DETE列 <ADD_MONTHS
(TRUNC( TO_DATE( 外部传入的结束时间, '-MM-DD' ), 'MM'), 1)
是 小于 结束时间下一个月的第一天。
业务背景 :有一张公众号粉丝关注数总表,按照每天汇总关注总数,解读如下:截止到 2022-01-01 公众号关注总数为: 45087
设计思路:
执行结果:
该实现方式,由于当前所在月还未到最后一天,存在无法获取当前月数据情况。经过考虑,使用 max 取每一个月中最大的一天,最终优化sql如下:
1、这里使用inner join 而非where 子查询,涉及到效率执行问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)