Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Vuoi saperne di più su NTILE()

Pensalo come bucket, NTILE(2) creerà 2 bucket, metà delle righe avrà il valore 1 e l'altra metà il valore 2

esempio

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

Ecco l'output, poiché hai un numero dispari di righe, il bucket 1 avrà 1 riga in più

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

Se aggiungi un'altra riga

insert #temp  values('S6',92 ) 

Ora entrambi i bucket hanno 3 righe

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

In realtà non ho mai usato NTILE nel codice di produzione, ma posso vedere l'uso in cui è necessario dividere i risultati in n numero di bucket