sql >> Databáze >  >> RDS >> Sqlserver

Chcete se dozvědět více o NTILE()

Představte si to jako kbelíky, NTILE(2) vytvoří 2 kbelíky, polovina řádků bude mít hodnotu 1 a druhá polovina hodnotu 2

příklad

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

Zde je výstup, protože máte lichý počet řádků, kbelík 1 bude mít o 1 řádek více

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

Pokud přidáte další řádek

insert #temp  values('S6',92 ) 

Nyní mají oba kbelíky 3 řady

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

Ve skutečnosti jsem nikdy nepoužil NTILE v produkčním kódu, ale vidím použití tam, kde potřebujete rozdělit výsledky do n počtu segmentů



  1. MYSQL - Řadit hodnoty časového razítka vzestupně v pořadí, od nejnovější po nejstarší?

  2. Upozornění:Nepodařilo se otevřít stream:Žádný takový soubor nebo adresář v C:\wamp\www\laravel\bootstrap\autoload.php na řádku 17

  3. java.sql.SQLException:ORA-00936:chybějící výraz

  4. mysql tabulka uzamčena po pádu php