Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Chcesz dowiedzieć się więcej o NTILE()

Pomyśl o tym jak o wiaderkach, NTILE(2) utworzy 2 wiadra, połowa wierszy będzie miała wartość 1, a druga połowa wartość 2

przykład

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

Oto wynik, ponieważ masz nieparzystą liczbę wierszy, zasobnik 1 będzie miał o 1 wiersz więcej

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

Jeśli dodasz jeszcze jeden wiersz

insert #temp  values('S6',92 ) 

Teraz oba wiadra mają 3 rzędy

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

W rzeczywistości nigdy nie używałem NTILE w kodzie produkcyjnym, ale widzę zastosowanie, w którym musisz podzielić wyniki na n liczbę wiader



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykryć, czy ciąg zawiera znaki specjalne?

  2. Jakie są równoważne typy danych C# dla daty, godziny i przesunięcia daty i czasu w programie SQL Server?

  3. Przekazywanie wartości varchar pełnej wartości oddzielonych przecinkami do funkcji SQL Server IN

  4. SQL Server 2008:problemy z połączeniem ODBC

  5. Czy TSQL zwróci szybsze wyniki niż procedura składowana w SQL Server?