Hàm NTILE
Bài học 10 trên 13 trong khóa học SQL nâng cao của Coddy.
NTILE(n) đánh số các hàng bằng cách chia chúng thành n phần bằng nhau. Hàm này thường được dùng để cải thiện hiệu năng. 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ề:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
Ta có 3 phần: level 4 ở phần 1, level 5 và level 6 ở phần 2, còn level 7 ở phần 3.
Nếu n trong NTILE(n) không chia hết cho số hàng của bảng: giả sử bảng có 9 hàng và n là 4, hàm sẽ đưa nhiều hàng nhất có thể vào phần cuối cùng.
Thử thách
Trung bìnhTrong thử thách này, chúng ta có những 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 sở thích được biểu thị bằng một con số. Nếu hai sinh vật có con số đủ gần nhau, chúng có thể là một cặp phù hợp.
Hãy tìm những cặp phù hợp nhất. Tạo một cột mới có tên couple_matcher, được đánh số từ một đến số lượng sinh vật chia cho hai, sao cho mỗi cặp có cùng một số. Chỉ có thể ghép cặp nếu một sinh vật có chân còn sinh vật kia thì không.
Sắp xếp kết quả theo couple_matcher và creature_name theo thứ tự tăng dần.
Tự làm thử
Tất cả bài học trong SQL nâng cao
Tự luyện tập: Trình biên dịch Python online