MSSQL中排名函数NTILE的高级使用

 时间:2024-10-26 13:23:20

排名函墙绅褡孛数NTILE是SQL2005中加入的,如果对他还不了解,那么先学习下【SQL2005新功能:缪梨痤刻[2]排名函数】这篇经验。下面有个实例,对班级进行排队,每队至多3人。由于班级的人数是不同的,也就是NTILE的组数不定,下面怎么来实现这个排队呢?

工具/原料

SQL2005,或更高版本(这里使用SQL2012)

排名函数NTILE是怎么计算的?

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

MSSQL中排名函数NTILE的高级使用

MSSQL中排名函数NTILE的高级使用

通过新建方法来实现

1、由于鲍伊酷雪NTILE中的参数无法根据分区动态获取。可能可以,不过作者没有写出来。参数说明:integer_expression只能引用PARTITIONBY子莞鲕塾侃句中的列。integer_expression不能引用在当前FROM子句中列出的列。

2、创建取分区分组的方法。通过班级来获取。CAST((CEILING(COUNT(1)*1.0/3))ASINT)将总人数/每队人数,使用进位取整。

MSSQL中排名函数NTILE的高级使用

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

MSSQL中排名函数NTILE的高级使用

MSSQL中排名函数NTILE的高级使用

使用自定义计算方法

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

MSSQL中排名函数NTILE的高级使用

2、查询结果与上面的一致

感谢阅读

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

MSSQL中排名函数NTILE的高级使用

MSSQL中排名函数NTILE的高级使用

MSSQL中排名函数NTILE的高级使用

内蒙古旅游穿衣攻略 如何翻新柚木地板 红眼病有什么症状? 乳腺小叶增生肿块痛怎么治 白色翅膀鸡尾酒如何调制
热门搜索
一眉道人 电影 樱井莉亚图片 女教师 电影 2017 节约能源图片 av电影网站