Considérez-le comme des seaux, NTILE(2) fera 2 seaux, la moitié des lignes aura la valeur 1 et l'autre moitié la valeur 2
exemple
create table #temp(StudentID char(2), Marks int)
insert #temp values('S1',75 )
insert #temp values('S2',83)
insert #temp values('S3',91)
insert #temp values('S4',83)
insert #temp values('S5',93 )
select NTILE(2) over(order by Marks),*
from #temp
order by Marks
Voici la sortie, puisque vous avez un nombre impair de lignes, le bucket 1 aura 1 ligne de plus
1 S1 75
1 S2 83
1 S4 83
2 S3 91
2 S5 93
Si vous ajoutez une ligne supplémentaire
insert #temp values('S6',92 )
Maintenant, les deux compartiments ont 3 lignes
1 S1 75
1 S2 83
1 S4 83
2 S3 91
2 S6 92
2 S5 93
En réalité, je n'ai jamais utilisé NTILE dans le code de production, mais je peux voir l'utilisation où vous devez diviser les résultats en n nombre de compartiments