计算用户排名

时间:2011-04-17 18:10:17

标签: c# sql sql-server algorithm statistics

假设我有一个包含以下列的表UserStatistics

UserId (UNIQUEIDENTIFIER)
ViewCount (BIGINT)
SubscriberCount (BIGINT)
Rank (INT)
  1. 在数据库中为数百万用户提供1-10或1-5等级的最佳方法是什么?
  2. 你会推荐什么? 1-10或1-5或其他什么?为什么?
  3. 编辑:

    我想更加重视SubscriberCount而不是ViewCount

2 个答案:

答案 0 :(得分:4)

要计算排名,可以使用ntile这样的排名。

select *, 
 ntile(5) over(order by ViewCount+SubscriberCount) as CalculatedRank
from UserStatistics

如果您想在SubscriberCount上将排名值设置为1-10并且权重更大,则可以像这样修改查询。

select *, 
 ntile(10) over(order by ViewCount+SubscriberCount*2) as CalculatedRank
from UserStatistics

答案 1 :(得分:2)

这取决于你想要获得这个排名......

如果你只是想在一些粗略的小组中分组,那么1-5

如果你想应用一些微妙的差异,你应该使用1-10

这纯粹基于您在应用程序中进一步分析rankig的上下文