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ụ:
| id | level |
| 1 | 4 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
| 6 | 7 |
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1Kết quả trả về sẽ là:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
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.
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ử
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
2Điều kiện
Kiến thức cơ bản về điều kiệnTừ khóa ANDTừ khóa ORTừ khóa NOTKết hợp nhiều điều kiệnDấu ngoặc đơnGiá trị logic3Định dạng giá trị trả về cụ thể
Giá trị nullSắp xếp kết quả phần 1Sắp xếp kết quả phần 2Ôn tập: Công ty an ninh mạngGiới hạn số bản ghiÔn tập: Nhà máy sản xuất xe6Thử thách nhập môn
Ôn tập: bầu cử quốc hộiÔn tập: cảnh sát bắt giữ tội phạmÔn tập: vật chứa đồ uống tại quầy barÔn tập: kỹ sư tạo cột mới9Nhiều bảng
Phép nối cơ bản phần 1Phép nối cơ bản phần 2Ôn tập về phép nốiPhép tự nốiÔn tập về phép tự nốiHợpĐơn giản hóa truy vấn bằng từ khóa WITHÔn tập về truy vấn WITHÔn tập về nhà thầu bất động sản12Hàm cửa sổ phần 2
Hàm RANK và DENSE_RANKÔn tập: RANK và DENSE_RANKHàm NTILEHàm tổng hợpTiêu chí ROWS và RANGETự luyện tập: Playground SQL