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

Vil du vide mere om NTILE()

Tænk på det som buckets, NTILE(2) vil lave 2 buckets, halvdelen af ​​rækkerne vil have værdien 1 og den anden halvdel værdien 2

eksempel

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

Her er outputtet, da du har et ulige antal rækker, vil spand 1 have 1 række mere

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

Hvis du tilføjer en række mere

insert #temp  values('S6',92 ) 

Nu har begge spande 3 rækker

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

I virkeligheden har jeg aldrig brugt NTILE i produktionskode, men jeg kan se brugen, hvor du skal opdele resultaterne i n antal spande



  1. Hvordan bruger man en streng-/kolonneværdi som en mysql-datointervalkonstant (DAG, MÅNED...)?

  2. MAX() i ORACLE SQL

  3. Laravel-migreringer - Problemer under oprettelse af tidsstempler

  4. MySQL SUM() giver forkert total