sql >> Database >  >> RDS >> Sqlserver

Wilt u meer weten over NTILE()

Zie het als buckets, NTILE(2) maakt 2 buckets, de helft van de rijen heeft de waarde 1 en de andere helft de waarde 2

voorbeeld

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

Hier is de output, aangezien je een oneven aantal rijen hebt, zal emmer 1 1 rij meer hebben

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

Als je nog een rij toevoegt

insert #temp  values('S6',92 ) 

Nu hebben beide emmers 3 rijen

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

In werkelijkheid heb ik NTILE nooit in productiecode gebruikt, maar ik kan het gebruik zien waarbij je de resultaten in n aantal buckets moet splitsen



  1. MySQL-relaties

  2. Wanneer en hoe de SQL PARTITION BY-clausule te gebruiken?

  3. Sorteer op laatste 2 karakters string

  4. Kan geen tabel maken met prepareStatement