Möchten Sie mehr über NTILE () erfahren?
Las ich auf den RANKING-Funktion für ms sql. Ich verstehe die anderen außer Funktion NTILE().
Können sagen, wenn ich diese Daten:
StudentID MARKS
S1 75
S2 83
S3 91
S4 83
S5 93
Also wenn ich einen NTILE(2) OVER(ORDER BY MARKS desc)
was wird die Folge sein und warum?
Und was ist, wenn es ist ein NTILE(3)
?
Einfache Erklärung anyone?
InformationsquelleAutor der Frage 10e5x | 2013-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken, wie Eimer, NTILE(2) wird 2 Eimer, die Hälfte der Zeilen haben den Wert 1 und die andere Hälfte den Wert 2
Beispiel
Hier ist die Ausgabe, da haben Sie eine ungerade Anzahl von Zeilen, Eimer 1 1 Zeile mehr
Wenn Sie fügen Sie eine weitere Zeile
Nun beide Eimer haben 3 Zeilen
In der Realität habe ich noch nie benutzt NTILE in der Produktion code, aber ich kann sehen, wo Sie brauchen, um teilen Sie die Ergebnisse in n Anzahl der buckets
InformationsquelleAutor der Antwort SQLMenace
Es wird ordnen Sie die Daten in absteigender Reihenfolge der Noten und dann aufteilen in 2 Gruppen.
Wenn die Daten nicht aufgeteilt werden in gleich große Gruppen, dann die ersten paar Gruppen haben mehr Zeilen als die letzteren Gruppen.
So NTILE(2) geben Sie
Ähnlich NTILE(3) geben Sie
InformationsquelleAutor der Antwort Aditi
Benutze ich NTILE Häufig nach split E-Mail-Listen in Gruppen für 10/10/80 testen. Zum Beispiel testen wir eine Betreff-Zeile einer E-Mail und senden möchten, eine der folgenden zwei Optionen auf jeweils 10% von der Liste, mit dem man die besser an die restlichen 80%.
WÄHLEN Sie [Feldliste],(NTILE(10) OVER(order by newid()))-1 ALS Ausschnitt AUS dem [data]
"Order by newid()" sorgt für eine zufällige Reihenfolge. "[NTILE ...]-1" syntax ist eine direkte Folge der einige andere Werkzeuge, die wir verwenden Sie dabei text-parsing statt integer Mathematik, so war es einfacher, die Ergebnisse von 0-9 anstatt 1-10. Das segment-Feld mit einem Wert von 0-9, die ich verwenden können, um die Trennung in 10% der Datensätze Recht einfach, und mehr als einmal für Kampagnen mit mehreren Bemühungen um Sie.
Wenn Sie eine Abfrage mit replizierbare Ergebnisse, du brauchst etwas, das deterministisch in der "order by" - Klausel hinzu, oder fügen Sie eine Spalte mit einer GUID zu verwenden, für die die order by-Klausel.
Die PARTITION BY-Klausel verwendet werden, um Gruppen zu erzeugen, der Eimer auf dem neuesten Stand, oder Beruf, oder einen anderen vorbestimmten Gruppierung, d.h. NTILE(10) ÜBER (PARTITION DURCH Staatliche ORDER BY newid()) oder so. Ich glaube, die ORDER BY-Klausel ist erforderlich, die PARTITION ist optional.
InformationsquelleAutor der Antwort nick
In Ntile-Funktion zuerst die Anzahl der Zeilen und Teile es durch die paramenter übergeben ntile und dann eine gleiche Gruppe von Zeilen nach dem Quotienten-und Rangfolge zu bringen und dann die restlichen Zeilen verteilt werden, indem jeder Gruppe von oben in eine sich verändernde Art und Weise und nicht nehmen wird es von den wenigsten Zeilen wenn zB Gruppe1 hat 4 Zeilen, dann dauert es 5. Reihe in seiner Gruppe nicht die Letzte Zeile.
Dank
InformationsquelleAutor der Antwort sam
Ntile ohne Verwendung der partition-Klausel, nur teilen Sie den Datensatz basierend auf der Anzahl der ntile(Anzahl), so dass : wenn keine der Zeilen 7, Beispiel: 1,1,1,2,3,4,5 ntile(3) geben 3,2,2. Wie habe ich 3,2,2?. Erstens übernehmen 7 6 (einen weniger, machen es auch), 6/3 gibt 2,2,2 , dann hinzufügen +! auf der ersten partition. Wenn die Nein.der Zeilen sind auch dann kein problem. nur teilen Sie das dataset
Ntile mit partition-Klausel, nur teilen Sie den Datensatz basierend auf den Werten im Datenbestand, so dass : wenn keine der Zeilen 7,Beispiel Zeile Werte sind: 1,1,1,2,3,4,5 dann: ntile(3) partitioniert Wert: 1,2,3,1,1,1,1. Wie ich dazu gekommen bin?. Erstens brechen Sie die dataset basierend auf den Werten: hier, 1,1,1 ist eine Partition, neben aller Werte bilden eine andere partition. Dann starten Sie die Zuordnung ntile Rang auf jeder partition. Hier, 1,1,1 wird zu 1,2,3 dann weiter mit der nächsten partition, können Sie ziehen Sie den Rang bekommen, bis die angegebene Anzahl in ntile () - Funktion
InformationsquelleAutor der Antwort Sagar Byali