NTILE 函数
Coddy 高级 SQL 课程的第 10 课,共 13 课。
NTILE(n) 会将行分成 n 个相等的部分,并为行编号。它常用于提升性能:一次发送大量数据可能不是好主意,因此这个函数可以让你每次发送较小的部分。
例如:
| 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 table1这会返回:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
我们得到了 3 个部分:第 1 部分中是 level 4,第 2 部分中是 level 5 和 level 6,第 3 部分中是 level 7。
如果 n 在 NTILE(n) 中不能整除表的行数:假设表有 9 行,且 n 为 4,它会尽可能多地将行放入最后一个部分。
挑战
中等在这个挑战中,有一些生物想要寻找伴侣。我们需要帮它们找到匹配的对象。
每个生物都有一个用数字表示的偏好。如果两个生物的数字足够接近,它们可能很匹配。
找出最佳配对。创建一个名为 couple_matcher 的新列,编号从 1 到生物数量的一半,每对生物的编号都应相同。只有一个生物有腿、另一个没有腿时,才能配对。
按 couple_matcher 和 creature_name 升序排列结果。
亲手试试
高级 SQL中的所有课
4总结
最终挑战 #1自己练习: Python 在线编译器