业务背景 :有一张公众号粉丝关注数总表,按照每天汇总关注总数,解读如下:截止到 2022-01-01 公众号关注总数为: 45087
设计思路:
执行结果:
该实现方式,由于当前所在月还未到最后一天,存在无法获取当前月数据情况。经过考虑,使用 max 取每一个月中最大的一天,最终优化sql如下:
1、这里使用inner join 而非where 子查询,涉及到效率执行问题。
获取上个月最后一天SELECT
date_sub( date_sub( date_format( now(), '%y-%m-%d' ), INTERVAL extract( DAY FROM now()) DAY ), INTERVAL 0 MONTH ) AS date
select * from tsrate_tj where date_format(ts_date,'%Y-%m-%d') in (LAST_DAY(STR_TO_DATE('2012-01','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-02','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-03','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-04','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-05','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-06','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-07','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-08','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-09','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-10','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-11,'%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-12','%Y-%m-%d')) )当然了 in 里面的条件可以用程序循环拼出来,年和月 看你具体的业务需求;需要别的条件就 继续 and;至于你要查什么,把*换掉你想要的就OK了;分页的话 直接在后面加 LIMIT。
希望能帮到你,望采纳!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)