MSSQL中排名函数NTILE的高级使用
1、先看下面的查询,从中可以发现,其实NTILE的值与公式[(N * (ROW_NUMBER() - 1) / COUNT(*)) + 1]计算得到的值是一致的。


1、由于NTILE中的参数无法根据分区动态获取。
可能可以,不过作者没有写出来。
参数说明:
integer_expression 只能引用 PARTITION BY 子句中的列。integer_expression 不能引用在当前 FROM 子句中列出的列。
2、创建取分区分组的方法。通过班级来获取。
CAST((CEILING(COUNT(1)*1.0/3)) AS INT)将总人数/每队人数,使用进位取整。

3、查询如下
关于CROSS APPLY的用法,在后续经验中介绍。


1、上面分析了NTILE的计算方法,只需将公式[(N * (ROW_NUMBER() - 1) / COUNT(*)) + 1]中的N参数修改即可。

2、查询结果与上面的一致
1、感谢你把本经验阅读完,如果有写的不好的地方,请指出以便纠正,以免误人子弟。
如果觉得本经验有用,浪费你几秒钟的时间在页面左下方点个赞。在页面顶部/经验底部投个票。



声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。