Pense nisso como baldes, NTILE(2) fará 2 baldes, metade das linhas terá o valor 1 e a outra metade o valor 2
exemplo
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
Aqui está a saída, já que você tem um número ímpar de linhas, o bucket 1 terá 1 linha a mais
1 S1 75
1 S2 83
1 S4 83
2 S3 91
2 S5 93
Se você adicionar mais uma linha
insert #temp values('S6',92 )
Agora os dois buckets têm 3 linhas
1 S1 75
1 S2 83
1 S4 83
2 S3 91
2 S6 92
2 S5 93
Na realidade, nunca usei o NTILE no código de produção, mas posso ver o uso em que você precisa dividir os resultados em n números de buckets