首页 新闻 会员 周边

求一个数据库查询排序算法,非常感谢

0
[待解决问题]

需求:

数据库表X,字段如下:
ProductId:bigint (自动生成的ID)
CommissionNum:bigint (累计的销量)

逻辑如下:
1.好商品是按照CommissionNum倒序排列的
2.每天会新增商品,新商品的ProductId是自增的
3.所有的顾客看到的商品是一样的

需要一个可以简单实施的算法,不需要完美的解决方案,达到以下要求:
1.以CommissionNum为参照,向顾客推荐好商品
2.让每天的新商品可以冒出来,而不是一成不变的list,让顾客感觉到商品的变化
3.最好能在数据库语句解决,实在不行,可以取出在内存中二次排序

希望大家能给个思路或者解决方案噢,感谢各位 :-)

父辈的旗帜的主页 父辈的旗帜 | 初学一级 | 园豆:2
提问于:2013-01-24 16:13
< >
分享
所有回答(4)
0

我这不会写SQL的人都会写:

1, select top 10 * from x order by CommissionNum desc;

2, select top 10 * from x order by ProductId desc;

Launcher | 园豆:45045 (高人七级) | 2013-01-24 16:16

你这是两个分开的结果,我需要一个聚合的结果,综合考虑新和销量的因素

支持(0) 反对(0) 父辈的旗帜 | 园豆:2 (初学一级) | 2013-01-24 16:22

@父辈的旗帜: 这可是你自己说的哦:

1.以CommissionNum为参照,向顾客推荐好商品
2.让每天的新商品可以冒出来,而不是一成不变的list,让顾客感觉到商品的变化

你自己都没法把你想要参考的因素描述清楚,别人怎么给你设计算法呢?也就是说你首先要能用文字把你想要的给表达出来。

我现在问你:综合考虑新和销量是怎么个考虑法?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-01-24 16:24

@Launcher:  对,我就是没想好怎么个考虑法所以才过来的请教滴。

因为boss给的就是这句话,我也不是很有头绪。

 

万望赐教

支持(0) 反对(0) 父辈的旗帜 | 园豆:2 (初学一级) | 2013-01-24 16:29

@父辈的旗帜: 你数据库缺少一个上架日期字段,你得加上。一个可能的算法:T1日到T2日(T1可以等于T2)销量前N的商品。

据此规则,根据实际的参数可以的出下列结果:

1,今日销量前十的商品;

2,最近一周销量前十的商品;

3,最近一个月销量前十的商品;

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-01-24 16:39
0

其实他和分页的原理是一样的,你现根据累计的销量查询你需要的数据数量,然后再根据自增的id进行排序,可以联合查询,把他们存到视图中,其实主体意思和上一位大侠的建议类似

妍珊 | 园豆:1169 (小虾三级) | 2013-01-24 16:25
0

需求就很不明确,到底是以新商品为主,还是以销量为主,二者只能取其一

Rich.T | 园豆:3440 (老鸟四级) | 2013-01-24 16:37
0

这样做,首先分写两个子sql,第一个子sql查询出最新的商品,第二条子sql查询销量最高的商品  然后通过union这个函数将这两个子sql合并处理,处理的时候分别给两个子sql多加一个字段,用来区分最新和最好。这样有最新的数据,也有买的最好的数据,然后在程序中将接受到这些数据来个无序排列,页面显示上根据刚才那个多添加的字段做标识处理,最新的商品,销量最好的商品,完美,楼主又没又达到你的有求

技术交流可以加这个群:43530068

牛精神 | 园豆:215 (菜鸟二级) | 2013-01-27 13:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册