目的
有A,B,C,D四种商品,现在我们需要对他们做分类统计,比如,A是一组,CD是一组,我们需要按组获取他们有段时间内售出的商品信息,并要能分页查看。这儿不能使用 mysql in() 查询。
难点
难点是,每天的售出数量是不定的,要是你能mysql in(),那就不是事,但要是你不能mysql in(), 那么你需要前后拼接好这儿的分页数据,比如:今天是10号9点,售出10;昨天是9号,售出199;8号,20;7号1;6号299;你按20条一页,怎么很好的衔接上。
思路
思路是,今天的数据不管,是实时的,可以实时取;以前的数据,在数据库按商品分别存储,如4个商品,就存储4份数据;然后按日期倒序做加法统计存储在redis中,如:10号10条,9号199条,8号20条,7号1;存储在redis中,10号不是这儿的逻辑存储,9号199,8号219,7号 220;然后按传入的pagesize,pagenum,做数据切割匹配。这样就能获得计数开始和结束的时间。如,pagesize = 50,pagenum = 5,那么 先200 – 10(10号的)=190,要计算 190是处在那一天,结束是在哪天,结果是9号到6号。然后你从数据库中获得 9号到6号的数据,在程序中做分页处理。
具体
打字好累,实在不想写。
ps1
我这儿查询都是一天数据进行查询的,数据量也不是很大的情况,没有在mysql中进行分组查询,因为对接的三分它就不支持分组查询。数据量大的情况没有处理过,想当然的想法就是时间细分,如按小时统计,保证最终查询数据时的足够精确,数据量小。
ps2
询结果可以临时缓存,设置定时过期,如 1小时,保证常用分页数据的快速获取。