sql >> Base de Datos >  >> RDS >> Sqlserver

Quiere aprender más sobre NTILE()

Piense en ello como cubos, NTILE(2) hará 2 cubos, la mitad de las filas tendrán el valor 1 y la otra mitad el valor 2

ejemplo

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

Aquí está el resultado, dado que tiene un número impar de filas, el cubo 1 tendrá 1 fila más

1   S1  75
1   S2  83
1   S4  83
2   S3  91
2   S5  93

Si agrega una fila más

insert #temp  values('S6',92 ) 

Ahora ambos cubos tienen 3 filas

1   S1  75
1   S2  83
1   S4  83
2   S3  91
2   S6  92
2   S5  93

En realidad, nunca he usado NTILE en el código de producción, pero puedo ver el uso en el que necesita dividir los resultados en un número n de cubos