Calcul d'un rang d'user

Supposons que j'ai une table UserStatistics avec les colonnes suivantes:

 UserId (UNIQUEIDENTIFIER) ViewCount (BIGINT) SubscriberCount (BIGINT) Rank (INT) 
  1. Quel serait le meilleur moyen de donner un rang de 1-10 ou 1-5 à des millions d'users dans la database?
  2. Que reorderais-tu? 1-10 ou 1-5 ou autre chose? Pourquoi?

MODIFIER:

Je voudrais mettre plus de poids sur le SubscriberCount que ViewCount

Pour calculer le rang, vous pouvez utiliser ntile comme ceci.

 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 ceci.

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

Cela dépend de ce que vous voulez réaliser avec ce classment …

Si vous voulez juste regrouper les gens en groupes bruts, alors 1-5

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

C'est purement basé sur le context dans lequel vous parsingz le classment plus loin dans votre application