我有一个包含2列的表格。 {UserId,Date}。这个表说N行,我想把它们分成大小为M行的箱子,所以总共有N / M个箱子。 UserId和Date可以在表中的多行上重复。每个bin应按顺序具有不重叠的用户ID。
例如:如果表有100行,每个bin的大小应为25,则bin范围如下
bin 1:用户1 - 用户20(25行)
bin 2:用户21 - 用户80(25行)
bin 3:用户81-用户95(25行)
bin 4:用户96-用户100(25行)
如何编写SQL查询以获取这些bin范围?
答案 0 :(得分:1)
听起来我觉得你正在寻找NTILE功能:http://msdn.microsoft.com/en-us/library/ms175126.aspx
在这种情况下,选择部分查询可能看起来像SELECT UserId, NTILE(4) OVER (ORDER BY UserId ASC) AS Bin FROM ...
您可以根据您想要的垃圾箱数量修改上面NTILE
旁边的数字4。
这将为您提供每行的“Bin”编号,然后您可以根据需要对其进行分组。