需求:
数据库表X,字段如下:
ProductId:bigint (自动生成的ID)
CommissionNum:bigint (累计的销量)
逻辑如下:
1.好商品是按照CommissionNum倒序排列的
2.每天会新增商品,新商品的ProductId是自增的
3.所有的顾客看到的商品是一样的
需要一个可以简单实施的算法,不需要完美的解决方案,达到以下要求:
1.以CommissionNum为参照,向顾客推荐好商品
2.让每天的新商品可以冒出来,而不是一成不变的list,让顾客感觉到商品的变化
3.最好能在数据库语句解决,实在不行,可以取出在内存中二次排序
希望大家能给个思路或者解决方案噢,感谢各位 :-)
我这不会写SQL的人都会写:
1, select top 10 * from x order by CommissionNum desc;
2, select top 10 * from x order by ProductId desc;
你这是两个分开的结果,我需要一个聚合的结果,综合考虑新和销量的因素
@父辈的旗帜: 这可是你自己说的哦:
1.以CommissionNum为参照,向顾客推荐好商品
2.让每天的新商品可以冒出来,而不是一成不变的list,让顾客感觉到商品的变化
你自己都没法把你想要参考的因素描述清楚,别人怎么给你设计算法呢?也就是说你首先要能用文字把你想要的给表达出来。
我现在问你:综合考虑新和销量是怎么个考虑法?
@Launcher: 对,我就是没想好怎么个考虑法所以才过来的请教滴。
因为boss给的就是这句话,我也不是很有头绪。
万望赐教
@父辈的旗帜: 你数据库缺少一个上架日期字段,你得加上。一个可能的算法:T1日到T2日(T1可以等于T2)销量前N的商品。
据此规则,根据实际的参数可以的出下列结果:
1,今日销量前十的商品;
2,最近一周销量前十的商品;
3,最近一个月销量前十的商品;
其实他和分页的原理是一样的,你现根据累计的销量查询你需要的数据数量,然后再根据自增的id进行排序,可以联合查询,把他们存到视图中,其实主体意思和上一位大侠的建议类似
需求就很不明确,到底是以新商品为主,还是以销量为主,二者只能取其一
这样做,首先分写两个子sql,第一个子sql查询出最新的商品,第二条子sql查询销量最高的商品 然后通过union这个函数将这两个子sql合并处理,处理的时候分别给两个子sql多加一个字段,用来区分最新和最好。这样有最新的数据,也有买的最好的数据,然后在程序中将接受到这些数据来个无序排列,页面显示上根据刚才那个多添加的字段做标识处理,最新的商品,销量最好的商品,完美,楼主又没又达到你的有求
技术交流可以加这个群:43530068