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
    

    行をもう1つ追加した場合

    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. クロス結合で行>列の組み合わせを見つける方法は? [SQL]

    2. DRYの原則が適用されない場合:SQLServerでのBITWISE操作

    3. ノードjsのnode-oracledbを使用して、オブジェクトを入力パラメータとしてストアドプロシージャに渡します

    4. mysql_secure_installationを使用する目的は何ですか?