统计小结Part2 | 七日打卡

468 阅读3分钟

作为统计的第二part,结合第一part的统计任务,再进行拓展,前面分享到统计出每日汇总的金额数据,这一part主要是展示数据的时候如何“正确地”展示。 

提前声明:整一篇part2的分享,更像是一个日报或是周报的记录,我用自己的话去描述而已,所以文章会显得很啰嗦,在这里先给各位看官打声招呼!

很多伙伴可能觉得无非就是查询接口,没有什么技术含量,但作为实打实的趟过坑,所以我有种分享的冲动,这也许就是我写这篇文章的初衷吧,避免过来人再度躺坑。 

bug 1:没有正确区分开始时间和结束时间 

上一part中搜索条件中使用的开始时间和结束时间,这个参数建议是从代码中来传,而不是使用数据库函数来作为查询参数,这里是考虑到数据库函数可能会影响索引等其他条件,包括每一次都使用数据库函数来统计时间,真的很耗资源!下面贴出上一part使用的sql语句: 

select trade_type, sum(`settle_amount`) as `sumSettleAmount` from finance_record where uid = ? and trade_time between ? and ? GROUP BY `trade_type` 

代码逻辑中是使用between ? and ?,所以在指定时间点上就生成了类似如下时间格式的代码: 

trade_time between '2021-01-12 00:00:00' and '2021-01-12 23:59:59'

这样就能保证统计的每一天不会有重复的数据,因为如果第二个参数填的是'2021-01-13 00:00:00',就会统计多同个时间点的数据。 

bug 2: 统计的查询条件写错 

跟字面意思一样,查询条件写错了,我主要是回顾我犯过的两次错误,这里主要是结合业务,在统计的sql中,还有个查询条件,但是当时我真的是晕菜了,就类似于本来要统计每个uid的数据,结果每个uid的值都是一样的(实际不是uid),然后就导致统计某个人的金额数据很多,结果当时没有查出问题,就先注释掉代码,到第二天定位出来再上线的时候,当天的数据是对的,但是昨天的数据又不对了,又去定位,结果才发现是因为昨天跑的数据有问题,真的是晕菜,被同一个坑坑了两次!

 再分享下两个小的优化点吧 

优化点1: 统计数据并更新时,要打印统计出来的数据,可以在日志中直观地查看 ~

优化点2: 优化select 中group by 多个字段时,如果where 条件中已有条件限制,可不必加group by字段; 类似下面的错误案例:

select * from finance_record where puid = ? group by puid;

今天就先到这里啦,感谢各位看官!