Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Muốn tìm hiểu thêm về NTILE ()

Hãy coi nó như các nhóm, NTILE (2) sẽ tạo 2 nhóm, một nửa số hàng sẽ có giá trị 1 và nửa còn lại có giá trị 2

ví dụ

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

Đây là kết quả, vì bạn có số lượng hàng không đồng đều, nhóm 1 sẽ có thêm 1 hàng

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

Nếu bạn thêm một hàng nữa

insert #temp  values('S6',92 ) 

Bây giờ cả hai nhóm đều có 3 hàng

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

Trong thực tế, tôi chưa bao giờ sử dụng NTILE trong mã sản xuất nhưng tôi có thể thấy cách sử dụng khi bạn cần chia kết quả thành n số nhóm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi tràn số học khi chuyển đổi biểu thức thành kiểu dữ liệu ngày giờ. (trong khi hiển thị ngày giờ ..)

  2. Sử dụng hàm COALESCE để phân tách các giá trị bằng dấu phẩy

  3. Thay đổi định dạng ngày giờ mặc định trên một cơ sở dữ liệu duy nhất trong SQL Server

  4. XPath để tìm nạp giá trị SQL XML

  5. Tạo SQL Cập nhật để thay đổi thứ tự của một mặt hàng?