2012-02-11 71 views
-1

我建立共享一些东西的应用程序...最佳实践和更

每个对象都可以被评为拥有评级1..5开始。我保留每个星的费用数量,因此可以计算平均费率。

所以每次的OBJ我有:平均速率和总速率。 我需要得到Top10评级的Obj - 所以可以使用AvgRate + TotalRate(那些谁拥有这些值为top10)。

我想在服务器中有一个SQL表是这样的: OBJID(指数),totalRate,AvgRate ... 如果能够有这个表进行排序,这样可以得到TOP10作为第10? 如何用我想要的计算查询top10?

此外 - 我需要获得每用户top10。所以每个用户我拥有他共享的所有Obj,因此可以拥有这些Obj的所有费率 - 如前所述,每个Obj都具有所有信息。

我需要知道如何计算用户速率,并且也 - 如何快速获得TOP10。

任何想法?

+0

不知道如果我理解,但你不能只需按升序排序并将结果限制为10 – 2012-02-11 11:06:13

回答

2

后来编辑:对不起,写这个答案的时候不明白你的问题,会离开它仍然为他人..


什么是你的TotalRate公式? “你可以使用AvgRate + TotalRate来做到这一点”你为什么总结一个平均值到TotalRate--无论这是什么?

最佳做法是始终逐渐计算总和/平均值。 我想此模型的OBJ:

  • 率的总数接收
  • 乙点的总和接收
  • Ç平均(浮动:B/A)
  • d - 外键用户(Obj的作者/所有者)

当对象接收到速率X时,您重新计算A = A + 1,B = B + X,C = B/A。 以相同的方式预先计算总和/平均值。因此,如果Obj属于用户,则向用户模型/表创建相同的字段(A,B,C),并且当Obj接收到速率X时,还更新用户D(Obj的所有者)的A,B,C值。然后,选择排名前10位的用户时,你不需要用OBJ表加入(可能获得巨大的),你只能选择用户 - 由B或C柱下降,限制10

+0

这是一种简单的方法 - 但是如果Obj有5个(例如)1的比率,那么它将会位于前10位,但它只有1个比率....显然,它不能在TOP10的时候有跟的OBJ 4率1000个用户(例如刚) – user1136875 2012-02-11 11:15:53

+0

总速率为1个* numOfRatesFor1Star + ... + 5 * numOfRatesFor5Star ......所以在前面的评论中提及的额定 - 需要获得TOP10不仅要根据平均汇率计算,还要根据评分人数来计算 – user1136875 2012-02-11 11:18:05

+1

好吧,现在我明白了,您需要根据平均汇率和汇率计算普及公式。我认为你需要寻找“流行algorythms”。大多数人都会计算最近的利率的频率,以便“老”职位被埋起来。 – 2012-02-11 11:23:09