sql >> Databasteknik >  >> RDS >> Sqlserver

Vill du veta mer om NTILE()

Se det som hinkar, NTILE(2) kommer att göra 2 hinkar, hälften av raderna kommer att ha värdet 1 och den andra hälften värdet 2

exempel

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

Här är resultatet, eftersom du har ett ojämnt antal rader kommer hink 1 att ha 1 rad till

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

Om du lägger till en rad till

insert #temp  values('S6',92 ) 

Nu har båda skoporna 3 rader

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

I verkligheten har jag aldrig använt NTILE i produktionskod men jag kan se användningen där du behöver dela upp resultaten i n antal hinkar



  1. Är Joomla 2.5 mycket snabbare än Joomla 1.5 Querywise

  2. Hur räknar man upp alla aktiverade roller för alla användare i PostgreSQL?

  3. Ska jag inkludera SELECT i en transaktion?

  4. Hur lagrar man födelsedatum och ålder så att ålder kan uppdateras dagligen i PHP/MySQL?