0
votes

Comment créer des déciles?

J'ai une donnée de vente. Je dois diviser les ventes en 10 seaux égaux et attribuer un nombre de déciles en conséquence. La plage des données est comprise entre 0 et 1000. Je souhaite créer les godets comme suit: xxx

comment obtenir la même chose sans spécifier de valeur explicitement?


1 commentaires

3 Réponses :


0
votes

Vous avez deux approches possibles, en utilisant rang_number () ou ntile () . L'exemple suivant démontre les différences entre ces approches. Si vous avez 950 articles et que vous utilisez ntile () , le résultat est de 10 godets avec 95 articles (1 ... 95, 96 ... 190, ..., 856 ... 950) . Avec Row_Number () Le résultat est de 10 godets, 9 d'entre eux avec 100 articles et le dernier avec 50 articles (1 ... 100, 101 ... 200, ..., 901. ..950)

Remarque, que si la commande est importante, vous devez utiliser une clause appropriée par au lieu de commander par (sélectionnez null) :

Énoncé: xxx

résultat: xxx


2 commentaires

Merci parfaitement lorsque nous connaissons la taille I.E. 100 dans l'avant.


Ok sûr va essayer cela aussi. Merci.



0
votes

Si vous souhaitez garantir que les godets sont toujours cohérents, vous devrez spécifier les valeurs qui définissent les godets ou une fonction qui les produit. Si, toutefois, vous êtes satisfait de la variance potentielle en fonction de vos données, vous pouvez utiliser Ntile fonction pour attribuer un numéro de ligne partitionné en fonction de la quantité de données renvoyées dans votre requête.

Si vous avez une valeur dans votre Dataset qui est un nombre entre 0 et 1000 que vous souhaitez trier dans des godets DIRECLE, il s'agit d'un bit trivial d'arithmétique: xxx

sortie xxx


4 commentaires

Merci parfaitement lorsque nous connaissons la taille I.E. 100 dans l'avant.


@Keval Je ne comprends pas votre commentaire, d'autant plus que la réponse que vous avez sélectionnée est correcte est la même que la colonne Tile dans la mine.


Pardon. En fait, "((V-1) / 100) +1 comme décile" devient statique. Si la plage de mes données changera, j'ai besoin de prendre soin de la valeur / 100.


@Keval Ma réponse incluait également l'option ntile .



1
votes

Vous pouvez obtenir la sortie en utilisant ntile code> strong>. Ici dans votre scénario actuel si le godet est 10, la requête peut être la suivante:

Range     Decile
1-100       1
101-200     2
201-300     3
301-400     4
401-500     5
501-600     6
601-700     7
701-800     8
801-900     9
901-1000    10


1 commentaires

Fonctionne parfaitement selon ce que je voulais. Merci.