2011-04-17 3 views
2

Supposons que j'ai une table UserStatistics avec des colonnes suivantes:Calcul d'un rang utilisateur

UserId (UNIQUEIDENTIFIER) 
ViewCount (BIGINT) 
SubscriberCount (BIGINT) 
Rank (INT) 
  1. Quelle serait la meilleure façon de donner un rang de 1-10 ou 1-5 millions d'utilisateurs dans le base de données?
  2. Que recommanderiez-vous? 1-10 ou 1-5 ou autre chose? Pourquoi?

EDIT:

Je voudrais mettre plus de poids sur la SubscriberCount que ViewCount

Répondre

4

Pour calculer le rang, vous pouvez utiliser ntile comme ça.

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

Si vous voulez des valeurs de rang à 1-10 et plus de poids sur SubscriberCount vous pouvez modifier la requête comme celui-ci.

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

Cela dépend de ce que vous voulez achive avec ce classement ...

Si vous voulez juste pour regrouper les gens dans certains groupes bruts, alors 1-5

Si vous voulez appliquer quelques différences subtiles, alors vous devriez aller avec 1-10

Il est juste purement basée sur le contexte dans lequel vous analysez le rankig plus loin dans votre application