Menu
CoddyTech

Hàm NTILE

Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 67 trên 72.

NTILE(n) đánh số các hàng bằng cách chia chúng thành n phần gần bằng nhau. Hàm (function) này thường được dùng để cải thiện hiệu suất. Gửi một lượng lớn dữ liệu cùng lúc có thể không phải là ý hay, vì vậy hàm này cho phép gửi từng phần nhỏ hơn.

Ví dụ:

idlevel
14
24
35
46
57
67
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1

Kết quả trả về sẽ là:

idlevelpieces
141
241
352
462
573
673

Chúng ta có 3 phần: mức 4 ở phần 1, mức 5 và mức 6 ở phần 2, và mức 7 ở phần 3.
Khi số hàng không chia hết cho n, NTILE phân bổ các hàng đều nhất có thể, trong đó các nhóm lớn hơn xuất hiện trước. Ví dụ, nếu bạn có 9 hàng và NTILE(4), cách phân bổ sẽ là:

  • Nhóm 1: 3 hàng
  • Nhóm 2: 2 hàng
  • Nhóm 3: 2 hàng
  • Nhóm 4: 2 hàng

Điều này bảo đảm số hàng giữa các nhóm bất kỳ không chênh nhau quá một hàng, và các hàng dư được phân bổ cho những nhóm có số thứ tự thấp hơn trước.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • creatures: creature_name, preference, has_legs (chứa 'YES' hoặc 'NO')

Trong thử thách này, các sinh vật muốn tìm một nửa phù hợp. Chúng ta cần giúp chúng tìm được đối tượng phù hợp.

Mỗi sinh vật có một mức độ ưa thích được biểu thị bằng một con số. Nếu con số của hai sinh vật đủ gần nhau, chúng có thể là một cặp phù hợp.

Chia các sinh vật thành 3 nhóm dựa trên giá trị mức độ ưa thích, nhưng chỉ xét những sinh vật có chân (trong đó has_legs = 'YES'). Trả về creature_name, preference và group_number (1, 2 hoặc 3). Sắp xếp kết quả theo preference theo thứ tự tăng dần.

Tự làm thử

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Playground SQL