Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Искате да научите повече за NTILE()

Мислете за това като кофи, NTILE(2) ще направи 2 кофи, половината редове ще имат стойност 1, а другата половина стойност 2

пример

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

Ето изхода, тъй като имате нечетен брой редове, кофа 1 ще има 1 ред повече

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

Ако добавите още един ред

insert #temp  values('S6',92 ) 

Сега и двете кофи имат 3 реда

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

В действителност никога не съм използвал NTILE в производствения код, но виждам употребата, при която трябва да разделите резултатите на n брой кофи



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е @@TEXTSIZE в SQL Server?

  2. Създайте обвързан изглед към схема в SQL Server

  3. Присъединяването на множество таблици връща стойност NULL

  4. съединете две идентични таблични структури с различни данни

  5. Как да реферирам един CTE два пъти?